如何使这个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,但是它不会让调用者添加任何东西到列表中(没有投射或警告),因为他们不知道什么是“真正的”类型的名单是. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |