【问题标题】:use a constructor as a method parameter使用构造函数作为方法参数
【发布时间】:2014-05-09 09:18:52
【问题描述】:

我正在编写一个将构建 SQL 表创建语句的类。我想做的是调用类似createTable(String tableName ColAndTypes... ct ) 的方法。当我编写该方法时,我没有收到任何编译错误。当我调用它时,我无法将值传递给方法,我认为这是因为我的语法错误,我不知道如何修复它。我想知道您是否可以查看我提供的示例并让我知道我需要做些什么来修复它。非常感谢您的帮助!

import java.util.*;
public class foo
{
public class bar{
    public String sBar1, sBar2;
    public bar(){
        sBar1 = "null";
        sBar2 = "null";
    }
    public bar(String sBar1, String sBar2){
    this.sBar1 = sBar1;
    this.sBar2 = sBar2;
    }
}

String sFoo;
List<bar> bi;

public foo(){
    sFoo = "null";
    bi = new bar();
}
public foo(Strinf sFoo, bar bi){
    this.sFoo = sFoo;
    this.bi = bi;
}

public void runFooBar(String sFoo, bar... barArgs)
{
    this.sFoo = sFoo;
    for(bar x:barArgs){System.out.Println(bi.get(x).sBar1   + ":" + bi.get(x).sBar2);}
}

public static void main(String[] args)  
{
    foo fi = new foo();
    fi.runFooBar("foo 1", ("1 sBar1","1 sBar2"),("2 sBar1 ","2 sBar2"))

}//end main

}//end class

【问题讨论】:

  • biList,但您将其初始化为 bar。你有一个错字Strinf 而不是StringList#get(int) 需要 int,但您传递给它的是 bar
  • 请遵守 Java 命名约定。类应该在PascalCase,所以Bar而不是bar。要回答您的具体问题,您没有。除非您使用 Java 8,否则我们不会。要解决您当前的问题,请传入(重命名的)Bar 类的 instances
  • 我知道我确实有一些拼写错误,感谢您的反馈

标签: java methods arraylist parameters constructor


【解决方案1】:

我不完全确定您要做什么,但这可以解决您的语法错误。

import java.util.ArrayList;
import java.util.List;

public class Foo {
    public static class Bar {
        public String sBar1, sBar2;

        public Bar(String sBar1, String sBar2) {
            this.sBar1 = sBar1;
            this.sBar2 = sBar2;
        }
    }

    String sFoo;
    List<Bar> bi;

    public Foo() {
        bi = new ArrayList<>();
    }

    public Foo(String sFoo, List<Bar> bi) {
        this.sFoo = sFoo;
        this.bi = bi;
    }

    public final void runFooBar(String sFoo, Bar... barArgs) {
        this.sFoo = sFoo;
        for (Bar x : barArgs) {
            System.out.println(x.sBar1 + ":" + x.sBar2);
        }
    }

    public static void main(String[] args) {
        Foo fi = new Foo();
        fi.runFooBar("foo 1", new Bar("1 sBar1", "1 sBar2"), new Bar("2 sBar1", "2 sBar2"));

    }//end main
}//end class

【讨论】:

  • 谢谢,非常感谢您的帮助。查看您的更正,我可以看出我在哪里犯了错误!
  • 很高兴能为您提供帮助。
猜你喜欢
  • 2019-03-03
  • 2016-01-24
  • 2011-09-04
  • 2010-09-12
  • 2021-01-08
  • 1970-01-01
  • 2016-11-08
  • 1970-01-01
相关资源
最近更新 更多