我现在有两个代码,几乎一摸一样,但是一个能用一个报错,看的我眼都绿了,文本比较器也用了,可还是不知道怎么会这样
[code="java"]public class Builderpattern{
private final int a;
private final int b;
private final int c;
private final int d;
private final int e;
private final int f;
public static class Builder{
private final int a;
private final int b;
private int c=0;
private int d=0;
private int e=0;
private int f=0;
public Builder(int a,int b){
this.a=a;
this.b=b;
}
public Builder c(int val)
{c=val; return this;}
public Builder d(int val)
{d=val;return this;}
public Builder e(int val)
{e=val;return this;}
public Builder f(int val)
{f=val;return this;}
public Builderpattern build(){
return new Builderpattern(this);
}
}
private Builderpattern(Builder builder){
a=builder.a;
b=builder.b;
c=builder.c;
d=builder.d;
e=builder.e;
f=builder.f;
}
public static void main(String[] args) {
Builderpattern cc=new Builderpattern.Builder(240,8).c(100).d(35).e(45).build();
}
}
[/code]这个能直接用
[code="java"]public class Nutrition {
private final int a;
private final int b;
private final int c;
private final int d;
private final int e;
private final int f;
public static class Builder {
private final int a;
private final int b;
private int c=0;
private int d=0;
private int e=0;
private int f=0;
public Builder(int a,int b){
this.a=a;
this.b=b;
}
public Builder c(int var)
{c = var; return this;}
public Builder d(int var)
{d = var; return this;}
public Builder e(int var)
{e = var; return this;}
public Builder f(int var)
{f = var; return this;}
public Nutrition build() {
return new Nutrition(this);
}
}
private Nutrition(Builder builder) {
a = builder.b;
b = builder.b;
c = builder.c;
d = builder.d;
e = builder.e;
f = builder.f;
}
public static void main(String[] args) {
Nutrition n = Nutrition.Builder(100,200).d(230).e(120).build();
}
}
[/code]这个就不行,两个代码几乎一样,可是第二个代码的main报错,期待答复