首页 > 解决方案 > 编译时 Java 注释以检查实例变量上支持的类型

问题描述

我们如何限制客户端代码仅将某些类型的数据传递给实例变量。在某种程度上,我们可以使用 super 和 extend 关键字来实现泛型。但是这种方法的局限性在于仅限于单一数据类型。

我觉得编译时注释是解决给定问题的唯一方法。

这是我的班级定义。

// The type parameter T should be instantiated as Boolean or Integer.
public class SampleClass<T> {

    private String name;

    private T value;

    public SampleClass(String name, T value) {
        this.name = name;
        this.value = value;
    }

    public String getName() {
        return this.name;
    }

    public T getValue() {
        return this.value;
    }

}

现在,如果有人想创建这个类的对象,那么他们需要为 value 变量指定 Type。

IE

SampleClass<Integer> s = new SampleClass<Integer>(); 

现在,问题是我是否想限制用户,以便他/她只能创建具有某些受支持类型的对象。例如,我想为上述类只支持 2 种数据类型(整数、布尔值)

所以下面是有效的场景

SampleClass<Integer> i = new SampleClass<Integer>(); // So now this object will work for integer value
SampleClass<Boolean> b = new SampleClass<Boolean>(); // So now this object will work for boolean value

现在,如果有人试图用其他数据创建对象,那么程序应该会显示编译时错误。

如何使用编译时注释来实现?是否已经存在任何注释?

标签: javaannotations

解决方案


推荐阅读