微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java 1.4 +可扩展构建器模式

如何解决Java 1.4 +可扩展构建器模式

| 在实现利用Java 1.4中的构建器模式的可扩展类时,我遇到了一些麻烦。该模式本身可以解决问题,但是由于缺乏泛型,因此在使其可扩展性方面遇到了一些麻烦。 在这一点上,我想出的最好的解决方案是在父级内部有一个抽象的内部
Builder
类。然后,它包含子类共有的所有必需参数的受保护构造函数,以及一些javadoc通知用户他们需要实现自己的
build()
方法,该方法返回与返回类相同类型的对象。如果人们使用RTFM可以正常工作,否则会损坏...这很糟糕。任何想法表示赞赏。 注意:我只能在1.4中工作,因为那是设计用于运行的专用硬件的VM。     

解决方法

        “仿冒”泛型的一种方法是让子类将ѭ2传递给构造函数。
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);
    }
}
    ,        泛型只是一种方便,它允许编译器为您强制执行一些操作。如果您只是彻底记录事物的类型并自己执行这些规则,那么在没有泛型的情况下您将获得相同的结果。哎呀,您甚至可以在注释中编写泛型类型的东西,然后自己关注它们。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。