如何使这个java通用转换?

前端之家收集整理的这篇文章主要介绍了如何使这个java通用转换?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何使这个 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,但是它不会让调用添加任何东西到列表中(没有投射或警告),因为他们不知道什么是“真正的”类型的名单是.

猜你在找的Java相关文章