java 呼叫方法引起歧義:The method XXX is ambiguous for the type XX
阿新 • • 發佈:2019-01-25
The method XXX is ambiguous for the type XX
eclipse編譯報錯。
分析原因:方法歧義,是編譯器無法確定,程式碼中使用哪一個方法。
1、呼叫的是自己編寫的方法
public class Ambiguous {
public static void main(String[] args) {
Ambiguous ambiguous = new Ambiguous();
ambiguous.Para(null);
}
public void Para(String a) {
System.out.println("String型別a" + a);
}
public void Para(StringBuffer a) {
System.out.println("StringBuffer" + a.toString());
}
}
顯然null作為引數,會導致編譯器無法識別呼叫哪一個方法。
這種情況,有一種特例是,如果方法的引數有繼承關係,那麼編譯器可以確定呼叫哪個方法,確定的原則是”我要的,你都有“。
2、呼叫庫方法。
有些庫靜態方法很多靜態欄位很多,為了方便呼叫呼叫,常常這樣寫:
import static org.csdn.linghushaoxia.Demo.*;
<pre name="code" class="java">import static org.csdn.linghushaoxia.Demo1.*;
如果,碰巧在別的包裡面,存在相同的方法,可就麻煩了,不容易查詢。
比如,呼叫了Demo.init()靜態方法,程式碼裡直接就寫init();
在Demo1裡面有Demo1.init(),程式碼裡再直接寫init();必然引起歧義了。
在查出歧義之後,就好解決了,加上包就可以了。
這樣子:
org.csdn.linghushaoxia.Demo.init();