加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何使这个java通用转换?

发布时间:2020-12-14 17:46:40 所属栏目:Java 来源:网络整理
导读:如何使这个 java通用转换? public interface IField {}class Field implements IField { // package private class}public class Form { private ListField fields; public ListIField getFields() { return this.fields; }} return语句引发编译器错误(我知
如何使这个 java通用转换?
public interface IField {

}


class Field implements IField { // package private class

}

public class Form {
  private List<Field> fields;


  public List<IField> getFields() {
    return this.fields;

  }

}

return语句引发编译器错误(我知道原因 – 我读了泛型教程),但编写这样的代码是非常方便的.

如果我将“fields”声明为列表,那么我需要在Form类的其他方法中使用大量的转换为Field.

我可以强制该编译器弯曲规则并编译该返回语句吗?

提前致谢.

解决方法

一个更好的解决方案,IMO,是改变您的方法的签名使用有界通配符:
public List<? extends IField> getFields()

这将让调用者将任何从“out”列表中的任何东西视为一个IField,但是它不会让调用者添加任何东西到列表中(没有投射或警告),因为他们不知道什么是“真正的”类型的名单是.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读