java - 我怎样才能使这个 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”声明为 List,我将需要在 Form 类的其他方法中对 Field 使用大量强制转换。

我可以强制那个该死的编译器改变它的规则并编译那个 return 语句吗?

提前致谢。

最佳答案

IMO,更好的解决方案是更改方法的签名以使用有界通配符:

public List<? extends IField> getFields()

这将使调用者将列表中“出来”的任何内容视为 IField,但它不会让调用者将任何内容添加到列表中(没有强制转换或警告),因为他们不知道“real"类型的列表是。

关于java - 我怎样才能使这个 java 泛型转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/314108/

相关文章:

java - JVM 在尝试获取信号量时卡住

java - 从静态上下文引用非静态方法

java - Grails - 从 groovy 中的默认 json 转换器中排除类名的更好方法?

java - Android:自定义RecyclerView中的单行

java - 使用java程序分析互联网速度

java - 加载应用程序时间太长

java - 检查日期在Java中的两个日期之间

Java如何检查数组列表中的对象是否包含某个值

java - 是否可以将数据发送到服务器而不下载响应?

java - Java中的Python itertools循环函数