将自习类传递给父通用

时间:2015-01-21 02:20:16

标签: java generics

我有一个父类需要为某些方法存储对实例化子类的引用。为此,我在父类的构造函数中强制执行泛型。

public abstract class Parent<T> {
    Class<T> clazz;

    public Parent(Class<T> clazz) {
        this.clazz = clazz;
    }
}

在子类中,我使用相同的子类型一般强制扩展父类。

public class Child extends Parent<Child> {
    public Child() {
        super(Child.class);
    }
}

对其他人来说这看起来很怪异吗?我觉得子类是如此冗余,因为我在泛型和构造函数中重用了相同的类型,它与调用类的类型相同。

1 个答案:

答案 0 :(得分:-2)

虽然这对我来说看起来很奇怪,但它不会产生预期的影响,因为你在创建子类时没有要求父类,你只是扩展父对象。

要解决此问题,您应该将父级作为子类的参数。

像这样;

public class Parent{
//Put something here to keep track of the children
//You could use a HashMap, or an ArrayList
private ArrayList<Child> children = new ArrayList<Child>();
     public void registerChild(Child child){
           children.add(child);   
     }
}

public class Child {
    public Child(Parent parent) {
        parent.registerChild(this);
    }
}