我有很多围绕服务的代理类,并且所有的看起来(几乎)相同。我可以通过使用泛型单例类以某种方式减少代码重复吗?它将Service
和Port
类作为类型参数>?
这是我完全错误的代码,我想要开始:
public class MyProxy<S extends Service, P extends BindingProvider>
{
private static final MyProxy<S extends Service, P extends BindingProvider> instance
= new Proxy<S extends Service, P extends BindingProvider>();
private S service;
public static MyProxy<S extends Service, P extends BindingProvider> getInstance() {
return instance;
}
}
- 我认为
MyProxy
的类型参数是正确的。 - 我可以声明静态
实例
单例成员变量吗?如何声明? - 成员变量
service
应该更简单,我可以有一个类型参数作为成员吗? getInstance()
的返回类型怎么样,怎么写?
最佳答案
这是与我的第一条评论相对应的代码。正如我所说,这涉及未经检查的强制转换。
public static class MyProxy<S extends Service, P extends BindingProvider> {
private static final MyProxy<? extends Service, ? extends BindingProvider> instance = new Proxy<Service, BindingProvider>();
private S service;
public static <S extends Service, P extends BindingProvider> MyProxy<S, P> getInstance() {
return (MyProxy<S, P>) instance;
}
}
关于java - 我可以创建一个作为泛型类型参数的成员变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18759198/