亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java找不到公共靜態方法

Java找不到公共靜態方法

叮當貓咪 2022-10-07 19:32:40
我正在開發一個程序,其中創建了兩個列表,并且必須對它們進行比較以查找是否有兩個相同的 RECURS。我正在測試它是否有效(并且必須使用這些方法)但我一直遇到同樣的問題;找不到標志。public class Duplicate {public Duplicate(){}; static ArrayList<Recurs> findDuplicate(ArrayList<Recurs> l1, ArrayList<Recurs> l2){    ArrayList<Recurs> l3 = new ArrayList<>();           for(int i=0; i<l1.size(); i++){        for(int j=0; j<l2.size();j++){        if(l2.get(i).equals(l1.get(j))){            l3.add(l1.get(i));            }          }    }   return l3;   } }這段代碼應該可以工作。順便說一句,我編寫了一個名為 Recurs 的類,據說它也可以工作(我做了另一個測試,在我創建了一個 equals 方法的地方工作正常)?,F在問題來了。public class Test {    public static void main (String[] args){        Recurs o = new Recurs(3, "a");         Recurs e = new Recurs(2, "b");        Recurs m = new Recurs(4, "a");         Recurs n = new Recurs(2, "b");        ArrayList<Recurs> l1= new ArrayList<>();             l1.add(o);            l1.add(e);        ArrayList<Recurs> l2= new ArrayList<>();             l2.add(m);            l2.add(n);        ArrayList<Recurs> l3 = new ArrayList<>(findDuplicate(l1, l2))    }}我創建了一個測試,它應該向我展示這部分正在工作,但我在最后一行代碼遇到了問題,因為它告訴我它找不到 findDuplicate。我是使用 Java 的新手,如果有人發現問題,他們能否指出它發生的原因?
查看完整描述

2 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

靜態方法“屬于”它們所編寫的類。

這里:

 findDuplicate(l1, l2)

嘗試在 Test 類中調用(靜態)方法!因為它是一個不合格的調用,所以編譯器會在發生調用的類(即Test)內部查找。findDuplicate()但是Test類中沒有方法!

相反,它來自 Duplicate 類,因此您需要:

Duplicate.findDuplicate(l1, l2)

(或者,您可以對該方法進行靜態導入,但對于新手學習的東西,我建議避免這樣做)

當然,該方法也必須對您的 Test 類可見。因此,要么這兩個類應該在同一個包中,要么正如各種評論中提到的那樣,該方法需要public修飾符。


查看完整回答
反對 回復 2022-10-07
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

如果沒有任何修飾符,您的方法將只能被它自己的類、子類和包訪問。為了使您的測試可以訪問它,您可以將其公開,但習慣上測試類通過添加與他們測試的類共享相同的包

package reverse.domain.name.app;

在你的班級和你的測試班之上。

其次,您的方法是靜態的,這意味著它與類相關聯,而不是與它的實例相關聯。這意味著你應該通過它的類名來引用它:

Duplicate.findDuplicate()


查看完整回答
反對 回復 2022-10-07
  • 2 回答
  • 0 關注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號