Java 1.4 +可扩展构建器模式

时间:2011-06-14 05:18:51

标签: java design-patterns generics java1.4

在实现一个利用java 1.4中的builder pattern的可扩展类时,我遇到了一些障碍。这种模式本身就是一种享受,但是由于缺乏泛型,我可以通过一些砖墙进行扩展。

此时我能够提出的最佳解决方案是在父级中有一个抽象的内部Builder类。然后,它包含一个受保护的构造函数,用于子类共有的所有必需参数,以及一些javadoc,用于通知用户需要实现自己的build()方法,该方法返回与返回类相同类型的对象。这适用于人们RTFM,否则它会破坏......这很糟糕。任何想法都赞赏。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

泛型只是一种便利,它允许编译器为您强制执行某些操作。如果您只是彻底记录事物的类型,并自己执行这些规则,那么您将获得相同的结果而无需泛型。哎呀,你甚至可以在评论中写下泛型类型的内容,并自己关注它们。