带继承的Java泛型
我有这样的课程结构:带继承的Java泛型,java,generics,inheritance,Java,Generics,Inheritance,我有这样的课程结构: public class NFAddress public class NFAddresses<T extends NFAddress> extends ArrayList<NFAddress> public class NFMutableAddress extends NFAddress public class NFMutableAddresses<T extends NFMutableAddress> extends NFAd
public class NFAddress
public class NFAddresses<T extends NFAddress> extends ArrayList<NFAddress>
public class NFMutableAddress extends NFAddress
public class NFMutableAddresses<T extends NFMutableAddress> extends NFAddresses<NFMutableAddress>
公共类地址
公共类NFAddresses扩展了ArrayList
公共类NFMutableAddress扩展了NFAddress
公共类NFMutableAddresses扩展了NFAddresses
当我尝试访问NFMutableAddresses中的对象时
for(NFMutableAddress nucleusAddress:this)
{
对象定义为NFAddress,而不是NFMutableAddress
}
感谢您的帮助。请尝试以下类定义:
public class NFAdressess<T extends NFAddress> extends ArrayList<T>
public class NFMutableAddresses<T extends NFMutableAddress> extends NFAddresses<T>
公共类NFAdressess扩展了ArrayList
公共类NFMutableAddresses扩展了NFAddresses
与您的类相比,更改的是将泛型参数
T
转发给要扩展的类。此参数T
可以是(在第一种情况下)扩展NFAddress
的任何对象(因此它可以是NFMutableAddress
或扩展这两个对象的任何对象).你想做什么?你的问题是什么?几乎没有理由扩展ArrayList我需要为脏对象和新对象添加一个保存方法…使用此.add()时,我实际上只能传递T,因为它扩展了ArrayList。查看那里的代码实际上我已经找到了方法:this.add((T)new-NFAddress())代码>