[英]Java constant objects and fields
我想制作一個文件,名為 ObjectsInfos.java 它有太多對象的信息。 哪種方式最適合解決問題? 哪一種最有效? 單身? 遺產? ..?
謝謝你的幫助。
.. 編輯。 信息將在稍后添加。 所以我必須將信息寫入一個新的 java 文件。
//ObjectsInfos.java
public class ObjectsInfos{
public class Object1Info{
static final int attr1 = 1;
static final int attr2 = 5;
}
public class Object2Info{
static final int attr1 = 3;
static final int attr2 = 6;
}
}
---------------------------
//Another java class
static void main(){
myGenericMethod(ObjectsInfos.Object1Info.attr1, ObjectsInfos.Object1Info.attr2);
myGenericMethod(ObjectsInfos.Object2Info.attr1, ObjectsInfos.Object2Info.attr2);
}
在我看來,您正在尋找enum
。
public enum ObjectsInfos{
Object1Info(1,5),
Object2Info(3,6);
private final int attr1;
private final int attr2;
ObjectsInfos(int attr1, int attr2) {
this.attr1 = attr1;
this.attr2 = attr2;
}
public int getAttr1() {
return attr1;
}
public int getAttr2() {
return attr2;
}
}
您還可以在類中定義一組枚舉。 例如,如果您考慮食物及其類別:
public class Food {
private Food() {
}
enum Fruit {
BANANA,
ORANGE
}
enum Vegetable {
CARROT,
LETTUCE
}
enum Cereal {
CORN,
WHEAT
}
enum Meat {
COW,
PORK
}
enum Sauce {
TOMATOE,
MUSTARD
}
}
枚舉是簡單String
或int
常量的強大替代品。 它們為您提供了一些開箱即用的方法,例如values
或valueOf
,它們非常方便,並且在其之上鍵入安全(僅使用ints
無法獲得)。
這是一個關於如何使用上述枚舉的簡單示例:
import java.util.Arrays;
import java.util.stream.Stream;
public class FoodMain {
public static void main(String[] args) {
System.out.println(isCereal("bla"));
System.out.println(isCereal("wheat"));
Stream.of(Food.Fruit.values()).forEach(System.out::println);
}
private static boolean isCereal(String cereal) {
return Arrays.stream(Food.Cereal.values()).anyMatch(c -> c.toString().equalsIgnoreCase(cereal));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.