0

在实现一个利用java 1.4中构建器模式的可扩展类时,我遇到了一些困难。模式本身是一种享受,但由于缺乏泛型,我在使其可扩展时遇到了一些障碍。

在这一点上,我能想到的最好的解决方案是Builder在父级中有一个抽象的内部类。然后,它包含一个受保护的构造函数,用于子类共有的所有必需参数和一些 javadoc,以通知用户他们需要实现自己的build()方法,该方法返回与返回类相同类型的对象。如果人们使用 RTFM,这将有效,否则它会中断......这很糟糕。任何想法表示赞赏。

注意:我一直在 1.4 中工作,因为这是设计用于运行的专用硬件的 VM。

4

2 回答 2

1

“伪造”泛型的一种方法是让子类将 a 传递给Class构造函数。

public class MySuperClass {

    private final Class clazz;

    protected MySuperClass(Class clazz) {
        this.clazz = clazz;
    }

    public void doSomethingGenericish(Object param) {
        // Pseudo generic check
        if (!param.getClass().isAssignableFrom(param)) {
            throw new ClassCastException("Could not cast " + param.getClass() + " as " + clazz);
        }
        // Some code
    }
}

public class MySubClass extends MySuperClass {

    protected MySubClass()
    {
        super(PseudoGenericsParameterClass.class);
    }
}
于 2011-06-14T06:02:11.683 回答
0

泛型只是一种方便,它允许编译器为你强制执行一些东西。如果您只是彻底记录事物的类型,并自己执行这些规则,那么在没有泛型的情况下您将获得相同的结果。哎呀,您甚至可以在评论中编写泛型类型的东西,然后自己关注它们。

于 2011-06-15T10:08:33.080 回答