我正在尝试创建一个通用容器,我可以将其传递给任何数据,稍后通过编译器跟踪类来提取它。
示例:
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;}
}
但我得到未知类:&#39; valueClass&#39; 错误。
请帮忙
谢谢
答案 0 :(得分:3)
您需要查看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的{ {3}}功能。
答案 1 :(得分:0)
public Class<?> getValue() {
return (Class) (value);
}
您正尝试使用引用而不是Class来键入强制转换。你也不应该覆盖最后的方法getClass()。