Java定数のみを持つファイルを宣言するためのベストプラクティスは何ですか?
public interface DeclareConstants
{
String constant = "Test";
}
OR
public abstract class DeclareConstants
{
public static final String constant = "Test";
}
どちらでもない。つかいます final class for Constants
として宣言しますpublic static final
およびstaticは、必要な場所にすべての定数をインポートします。
public final class Constants {
private Constants() {
// restrict instantiation
}
public static final double PI = 3.14159;
public static final double PLANCK_CONSTANT = 6.62606896e-34;
}
使用法 :
import static Constants.PLANCK_CONSTANT;
import static Constants.PI;//import static Constants.*;
public class Calculations {
public double getReducedPlanckConstant() {
return PLANCK_CONSTANT / (2 * PI);
}
}
Wikiリンクを参照してください: http://en.wikipedia.org/wiki/Constant_interface
-public static final
でClass
を作成しますフィールド。
-そして、Class_Name.Field_Name
を使用して、任意のクラスからこれらのフィールドにアクセスできます。
-class
をfinal
として宣言できるため、class
拡張(継承)および変更不可)。 ...
どちらも有効ですが、通常はインターフェイスを選択します。実装がない場合、クラス(抽象または非抽象)は必要ありません。
アドバイスとして、定数の場所を賢明に選択するようにしてください。定数は外部契約の一部です。 1つのファイルにすべての定数を入れないでください。
たとえば、定数のグループが1つのクラスまたは1つのメソッドでのみ使用されている場合、それらをそのクラス、拡張クラス、または実装されたインターフェイスに配置します。気をつけないと、大きな依存関係の混乱に陥る可能性があります。
時々、列挙は定数(Java 5)の優れた代替手段です。次を参照してください。 http://docs.Oracle.com/javase/1.5.0/docs/guide/language/enums.html
Propertiesクラスを使用することもできます
以下は定数ファイルです
# this will hold all of the constants
frameWidth = 1600
frameHeight = 900
定数を使用するコードは次のとおりです
public class SimpleGuiAnimation {
int frameWidth;
int frameHeight;
public SimpleGuiAnimation() {
Properties properties = new Properties();
try {
File file = new File("src/main/resources/dataDirectory/gui_constants.properties");
FileInputStream fileInputStream = new FileInputStream(file);
properties.load(fileInputStream);
}
catch (FileNotFoundException fileNotFoundException) {
System.out.println("Could not find the properties file" + fileNotFoundException);
}
catch (Exception exception) {
System.out.println("Could not load properties file" + exception.toString());
}
this.frameWidth = Integer.parseInt(properties.getProperty("frameWidth"));
this.frameHeight = Integer.parseInt(properties.getProperty("frameHeight"));
}