[英]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.