2 回答

TA貢獻(xiàn)1776條經(jīng)驗 獲得超12個贊
使用泛型:
public static <T> T returnNull() {
return (T) null;
}
從評論跟進(jìn)
下面的代碼與我所能理解的最接近注釋,并且編譯得很好:
public class Test {
public static void main(String[] args) {
CustomClass cc = new CustomClass();
if (cc != returnNull())
cc.errlog( returnNull() );
}
public static <T> T returnNull() {
return (T) null;
}
}
class CustomClass {
void errlog(Exception e) {
}
}
現(xiàn)在,如果有 2 個errlog方法只有一個非原始參數(shù):
class CustomClass {
void errlog(Exception e) {
}
void errlog(String s) {
}
}
然后它將失敗并顯示錯誤The method errlog(Exception) is ambiguous for the type CustomClass,因為編譯器不知道T應(yīng)該是Exception還是String,即調(diào)用兩者中的哪一個。
您必須明確告訴編譯器:
cc.errlog( Test.<Exception>returnNull() );

TA貢獻(xiàn)1828條經(jīng)驗 獲得超4個贊
使用泛型螞蟻它會工作。示例:
public class ReturnNullExample {
public static void main(String[] args) {
ReturnNullExample example = new ReturnNullExample();
example.someMethod(ReturnNullClass.returnNull());
CustomClass cc = null;
if(cc == ReturnNullClass.returnNull()) {
System.out.println("cc is null");
}
cc = new CustomClass();
if(cc != ReturnNullClass.returnNull()) {
System.out.println("cc is not null");
}
}
public void someMethod(CustomClass customClass) {
System.out.println("This method does nothing");
}
}
class CustomClass {
private int number;
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
}
class ReturnNullClass {
public static <T> T returnNull() {
return null;
}
}
添加回答
舉報