我怎样才能使这个 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/