Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中为不同的对象创建单独的列表?_Java_Oop - Fatal编程技术网

如何在Java中为不同的对象创建单独的列表?

如何在Java中为不同的对象创建单独的列表?,java,oop,Java,Oop,我试图实现的是——拥有一个所有对象共享的而不是的列表,即为从类创建的每个对象拥有一个唯一的列表,类似于下面的代码,这显然会导致错误,因为ArrayList需要是静态的 public class Foo{ public ArrayList<String> chain = new ArrayList<>(); public addElement(String input){ this.chain.add(input); } } public

我试图实现的是——拥有一个所有对象共享的而不是的列表,即为从类创建的每个对象拥有一个唯一的列表,类似于下面的代码,这显然会导致错误,因为ArrayList需要是静态的

public class Foo{
   public ArrayList<String> chain = new ArrayList<>();
   public addElement(String input){
        this.chain.add(input);
   }
}
public printList(){
  for(String s : this.chain){
     System.out.println(s);
  }
}
public static void main(){
  Foo x = new Foo();
  Foo y = new Foo();

  x.addElement("abc");
  x.addElement("pqr"); 

  y.addElement("lmn");
  y.addElement("rty");

  x.printList(); //print abc pqr
  y.printList(); //print lmn rty
}
公共类Foo{
public ArrayList chain=new ArrayList();
公共加法器(字符串输入){
此.chain.add(输入);
}
}
公共打印列表(){
for(字符串s:this.chain){
系统输出打印项次;
}
}
公共静态void main(){
Foo x=新的Foo();
Foo y=新的Foo();
x、 附录(“abc”);
x、 附录(“pqr”);
y、 附录(“lmn”);
y、 附录(“rty”);
x、 printList();//打印abc pqr
y、 printList();//打印lmn
}

有什么方法可以实现上述输出吗?

你的括号到处都是,你错过了函数返回类型,它们的名称和调用不匹配,而且你的main没有遵循正常的模式。换句话说,它可能需要一些帮助

public class Foo
{
public ArrayList<String> chain = new ArrayList<>();


public void addElement( String input )
{
    this.chain.add( input );
}


public void printList()
{
    for( String s : this.chain )
    {
        System.out.println( s );
    }
}


public static void main(String args[])
{
    Foo x = new Foo();
    Foo y = new Foo();

    x.addElement( "abc" );
    x.addElement( "pqr" );

    y.addElement( "lmn" );
    y.addElement( "rty" );

    x.printList(); //print abc pqr
    y.printList(); //print lmn rty
}
}
公共类Foo
{
public ArrayList chain=new ArrayList();
公共void addElement(字符串输入)
{
此.chain.add(输入);
}
公共作废打印列表()
{
for(字符串s:this.chain)
{
系统输出打印项次;
}
}
公共静态void main(字符串参数[])
{
Foo x=新的Foo();
Foo y=新的Foo();
x、 附录(“abc”);
x、 附录(“pqr”);
y、 附录(“lmn”);
y、 附录(“rty”);
x、 printList();//打印abc pqr
y、 printList();//打印lmn
}
}

从我对你想要什么的理解来看,这应该行得通。您可能希望在构造函数中初始化ArrayList,但这是您的选择。

公共addElement(字符串输入)中存在严重问题,因为它没有在签名中定义返回类型。改为写
public void addElement(字符串输入)
,我想知道为什么您认为“显然……ArrayList需要是静态的”。似乎整个问题都是基于一个误解。@KYL3R不,这只是java 8菱形运算符,您不需要指定两次,想象一下
Map m=new hashmappro谢,不知道:)此程序将要求将
chain
变量更改为static。甚至不会compile@DebmalyaBiswas为什么会这样?我成功地编译了它,没有任何问题。