如何解决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 举报,一经查实,本站将立刻删除。