Java 1.4+可扩展构建器模式



在实现一个利用java1.4中的构建器模式的可扩展类时,我遇到了一些困难。该模式本身是一种享受,但由于缺乏泛型,在使其可扩展性方面,我遇到了一些困难。

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

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

"伪造"泛型的一种方法是让子类将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);
    }
}

泛型只是一种方便,它允许编译器为您强制执行一些内容。如果你只是彻底地记录事物的类型,并自己执行这些规则,那么在没有泛型的情况下,你会得到同样的结果。见鬼,你甚至可以在评论中写下泛型类型的东西,然后自己去做。

相关内容

  • 没有找到相关文章

最新更新