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