如何从main调用java中的方法?

use*_*344 0 java methods program-entry-point call calling-convention

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");
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

为什么结果[cat]列表不包含cat?它一直给我[猫]列表不包含猫.第一种方法是正常工作,但为什么不是第二种方法呢?谢谢......我真的很陌生.

Sud*_*hul 7

那是因为你用不同的实例调用这两种方法.

new Test().add(); // Creates 1 instance
new Test().contains(); // creates another instance
Run Code Online (Sandbox Code Playgroud)

您需要使用相同的实例来调用这两个方法.

Test t = new Test();
t.add();
t.contains();
Run Code Online (Sandbox Code Playgroud)

Testnew Test()它创建的每个新对象都有自己的副本list.这就是为什么当你contains()用另一个实例调用时,它仍然是空的list,因为第一个实例只添加了字符串"cat".