iteye_6541 2011-03-18 23:14
浏览 176
已采纳

一个简单的构造器问题 有代码就是不能运行

我现在有两个代码,几乎一摸一样,但是一个能用一个报错,看的我眼都绿了,文本比较器也用了,可还是不知道怎么会这样
[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报错,期待答复

  • 写回答

2条回答 默认 最新

  • changchanghust 2011-03-18 23:46
    关注

    [quote]Nutrition n = Nutrition.Builder(100,200).d(230).e(120).build();[/quote]

    少了个new。。。

    [code="java"]Nutrition n = new Nutrition.Builder(100, 200).d(230).e(120).build();[/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘