java - 编译时 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
现在,如果有人试图用其他数据创建对象,那么程序应该会显示编译时错误。
如何使用编译时注释来实现?是否已经存在任何注释?
解决方案
推荐阅读
- flutter - 颤振致命错误:lipo:-extract armv7 指定但... shared_preferences 不包含该架构
- java - onTaskRemoved() 没有在 Oppo 设备中被调用
- ios - 使用 RealityKit 跟踪相机位置
- r - 在 R 中整理数据
- laravel - 验证中发生错误时保留带有输入的动态行
- magento - getTemplate() 不起作用 $parents[1].getRegion Knockout js
- .net-core - 从 csv 文件中跳过行
- python - 计算Python中每一行中特定列的下3行的最大值
- c# - C# Tasks.Run,本地变量未提供给任务?漏洞?
- r - 读取txt文件并将其转换为数据框