【问题标题】:How do I set up an inferred type list getter and setter?如何设置推断类型列表 getter 和 setter?
【发布时间】:2015-01-08 16:57:46
【问题描述】:
List<T> objectList = null;
public <T> List<T> getObjectList() { return this.objectList; }
public <T> void setObjectList(List<T> objList) { this.objectList = objList; }

问题似乎是字段声明。从语义上讲,我想知道为什么,因为目标是推断类型,所以这不起作用。

从短期收益的角度来看,我只想要一些有效的东西。

如果有人能指出我对推断类型的详细、深入的讨论以及示例,那就锦上添花。

上下文是从请求-回复总线消息返回的原始字符串,需要将其反序列化为类似 javabean 对象的列表。我意识到我可以创建一个标记接口并让我所有的 javabean 实现它,但是,这对我来说似乎是一种古怪的解决方案。

JDK 1.6(没有机会升级到 7 或 8)

【问题讨论】:

  • List&lt;?&gt; objectList = null; 然后在方法主体中进行强制转换似乎是实现这一目标的快速而肮脏的方式。
  • List&lt;T&gt; objectList; 这是在哪里声明的? T 声明在哪里?

标签: java list generics types inference


【解决方案1】:

您已经输入了您的方法...不要 - 从 get/set 方法中删除 &lt;T&gt;

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; }

最初的&lt;T&gt; 声明了一个类型用于方法调用的范围,并且您使用了与您的类相同的泛型参数名称,因此方法类型隐藏 类类型。

你编码了吗:

public <X> List<T> getObjectList() { return this.objectList; }
public <X> void setObjectList(List<T> objList) { this.objectList = objList; }

它也会起作用的。当然X 泛型参数会被忽略,但至少很明显它是不必要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    • 2012-03-12
    相关资源
    最近更新 更多