java - java中的通用容器

标签 java generics

我正在尝试创建一个通用容器,我可以向其中传递任何数据,并稍后使用编译器跟踪类来提取它。

示例:

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 基本类型一起使用 - 所以如果您要将它们与 intdouble 一起使用你需要了解Java的autoboxing功能。

关于java - java中的通用容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34480669/

相关文章:

C# - 在 Select 子句中选择可编程属性

Java 泛型类型绑定(bind)。为什么这不编译?

java - Jenkins 中的 Groovy Postbuild,解析日志中的字符串并计算它们

java - 在 Android 中维护专业版和免费版

使用模板的 C++ 链表

generics - 如何创建灵活但静态大小和不同类型的通用数组

java - JDBC/连接器 : When to load drivers?

java - 无法在离线模式下构建 Android Hello World 应用程序

java - 在 Mac 上将 JFrame 与 Netbeans 结合使用

java - wtf.is.going.on 中的抽象方法foo(E) 无法直接访问super.foo(e) 用ANT 编译