带继承的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())