import java.util.*;
import java.io.*;
public class Test extends ArrayList
{
ArrayList<String> list = new ArrayList<String>();
public static void main(String[] args)
{
new Test().add();
new Test().contains();
}
public boolean add(){
list.add("cat");
System.out.println(list);
return true;
}
public void contains(){
if (list.contains("cat")){
System.out.println("list contains cat");
}
else{
System.out.println("list doesn't contain cat");
}
}
}
为什么结果[cat]列表不包含cat? 它一直给我 [cat] 列表不包含猫。 第一种方法可以正常工作,但为什么第二种方法不行呢? 谢谢...我对此真的很陌生。
最佳答案
这是因为您使用不同的实例调用这两个方法。
new Test().add(); // Creates 1 instance
new Test().contains(); // creates another instance
您需要使用同一个实例来调用这两个方法。
Test t = new Test();
t.add();
t.contains();
由 new Test()
创建的每个新 Test
对象都有其自己的 list
副本。这就是为什么当您使用另一个实例调用 contains()
时,它仍然是空的,因为第一个实例的 list
仅添加了字符串“cat”。
关于java - 如何从main调用java中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19996363/