我正在尝试创建一个通用容器,我可以向其中传递任何数据,并稍后使用编译器跟踪类来提取它。
示例:
Container a = new Container(0.3);
a.getValue();// returns 0.3 of type double
Container b = new Container("OMG");
b.getValue();// returns "OMG" of type String
我对如何做没有任何限制。我正在考虑这样的事情。
public class GameSetting {
Object value;
Class valueClass;
public GameSetting(Object value, Class valueClass) {
this.value = value;
this.valueClass = valueClass;
}
public Class<?> getValue() {
return (valueClass)value;
}
public Class getClass(){return this.valueClass;}
}
但我收到未知类:'valueClass'错误。
请帮忙
谢谢
最佳答案
您需要查看Java Generics 。你的基本容器类看起来像这样......
public class Container<T> {
private final T value;
public Container(T value) {
this.value = value;
}
public T getValue() {
return value;
}
}
然后你可以像这样使用它......
Container<Double> a = new Container<>(0.3);
a.getValue();// returns 0.3 of type double
Container<String> b = new Container<>("OMG");
b.getValue();
使用泛型需要注意的一件事是它们不能直接与 Java 基本类型一起使用 - 所以如果您要将它们与 int
和 double
一起使用你需要了解Java的autoboxing功能。
关于java - java中的通用容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34480669/