如何设置推断类型列表getter和setter?

时间:2014-11-11 23:57:17

标签: java list generics types inference

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)

1 个答案:

答案 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泛型参数会被忽略,但至少它显然是不必要的。