具有多个声明的Java泛型
我正在使用以下泛型实现一个类:
public abstract class AbstractTask<T,V>
{
public void method1 (T param1, V param2) {}
}
声明<T,K>
可以是变量吗?我想通过以下方式扩展该类:
public class TaskOne extends AbstractTask<Integer,String>
{
public void method1 (Integer param1, String param2) {}
}
public class TaskTwo extends AbstractTask<Number,Object,Double>
{
public void method1 (Number param1, Object param2, Double param3) {}
}
有可能这样做吗
谢谢
# 1 楼答案
不,这是不可能的,Java编译器强制执行泛型,您将得到编译错误
# 2 楼答案
否,泛型类的所有实例的类型和方法参数数量必须相同
如果我们知道您想要实现的目标,我们可能会提出替代方案。例如,如果这是关于将任务提交到线程池,则可以执行以下操作:
或者可以使用AOP代理捕获参数
或者(如果您不需要类型安全性),您可以简单地
或者
# 3 楼答案
不,你不能
您应该将
V
从普通的java.lang
类型更改为参数的包装器等等
显然,选择一个更合理的名称来反映您试图解决的问题