List<T> objectList = null;
public <T> List<T> getObjectList() { return this.objectList; }
public <T> void setObjectList(List<T> objList) { this.objectList = objList; }
问题似乎是字段声明。在语义上,我想知道为什么,因为目标是推断类型,这不起作用。
从短期收益的角度来看,我只想要一些有用的东西。
如果有人会指出我对推断类型进行详细的,即深入的讨论,可以说明问题。上下文是从请求 - 回复总线消息返回的原始字符串,需要将其反序列化为类似javabean对象的列表。我意识到我可以创建一个标记界面并使我所有的javabeans都能使用它,但这对我来说似乎是一种愚蠢的解决方案。
JDK 1.6(无法升级到7或8)
答案 0 :(得分:1)
您输入了方法...不要 - 从get / set方法中删除<T>
:
public List<T> getObjectList() { return this.objectList; }
public void setObjectList(List<T> objList) { this.objectList = objList; }
编码时
public <T> List<T> getObjectList() { return this.objectList; }
public <T> void setObjectList(List<T> objList) { this.objectList = objList; }
初始<T>
为方法调用的范围声明了一个类型,并且您使用了与您的类相同的泛型参数名称,因此方法类型隐藏类类型。
你编码:
public <X> List<T> getObjectList() { return this.objectList; }
public <X> void setObjectList(List<T> objList) { this.objectList = objList; }
它也会奏效。当然X
泛型参数会被忽略,但至少它显然是不必要的。