我有像
这样的父类 class A{
//Constructors only called by builder.
public static class builder{
//builder code.
}
}
Class B Extends ClassA{
//constrctor
}
现在,如果我参加我的测试
final classA dempClassA = new ClassB("parameters here");
我现在如何调用构建器??
不好意思,建筑师是一个班级...我的错误。
答案 0 :(得分:1)
如果我理解你想说的话,你会遇到以下情况:
public class ClassA {
// Constructors only called by builder.
public static class Builder {
// builder code.
public static void hello() {
System.out.println("Hello");
}
public void hello1() {
System.out.println("Hello1");
}
}
}
你可以这样访问它:
class ClassB extends ClassA {
public static void main(String[] args) {
ClassA.Builder.hello();
ClassA.Builder builder = new Builder();
builder.hello1();
}
}
答案 1 :(得分:0)
如果你想从A
类之外调用该方法,那么它不应该是私有的。
如果您只是希望它成为B
创建过程的一部分,那么您应该执行以下操作:
class B extends A {
public B() {
super(); // invokes A's constructor
}
}
class A {
public A(){
// use builder() here
}
}
答案 2 :(得分:0)
由于builder
(是一个类btw?还是缺少返回类型?)是静态的,你可以称之为A.builder()
。为了让它可见,你不应该把它变成私人的:)
编辑:因为它是一个类,你有几种可能性:
new A.builder(...)
A.builder.someStaticMethod(...)
答案 3 :(得分:0)
制作ClassA的builder
方法protected
(而不是private
),因此它们对ClassB可见,然后使用匿名类来调用它,如下所示:
ClassA tempClassA = new ClassB("parameters here") {
{
// This block is called during construction
builder();
}
};