簡體   English   中英

如何從main調用Java中的方法?

[英]How do I call a method in java from main?

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]列表中不包含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”。

因為arraylist不是靜態的,所以您要創建兩個App實例,每個實例都有自己的list變量。

將變量設置為static它將起作用。

static ArrayList<String> list = new ArrayList<String>();

但是最好使用同一實例兩次調用。

Test test = new Test();
test.add();
test.contains();

您要兩次調用new Test() 您正在創建兩個實例。 您將添加到第一個,並在第二個(新創建的)中檢查contains

您正在創建兩個Test實例。 然后,您創建兩個單獨的“列表”實例。 第一個使用字符串“ cat”,第二個為空。

為什么要擴展ArrayList? 也許你可以這樣嘗試...

import java.util.ArrayList;

public class Test {

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("cat");
        System.out.println(list);

        if (list.contains("cat")) {
            System.out.println("list contains cat");
        } else {
            System.out.println("list doesn't contain cat");
        }     

    }  
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM