2012-04-24 21 views
2

考慮一下:自動超載可能嗎?

public static abstract class JunkValue<X>{ 
    public abstract X value(); 
    public static <X> JunkValue<X> fix(final X x){ 
     return new JunkValue<X>() 
      { 

       @Override 
       public X value() { 
        return x; 
       }}; 
    } 
} 

現在我可以很容易地使這兩種方法:

void test(HappyObject object){test(JunkValue.fix(object));} 

void test(JunkValue<HappyObject> object){...} 

我想告訴我的編譯器,如果我有一個JunkValue<HappyObject>參數我可以只使用一個HappyObject對象參數,而不是爲此。

我從這個事實得到的想法是,你可以做Number=1;而不是Number=new Number(1),我從擴展數字的時候得到了很多滿意的結果。我只想要與對象相同的效果而不是數字。

謝謝。

+4

Java中沒有運算符的重載。你用汽車拳擊將它弄糊塗 – 2012-04-24 14:16:31

+0

是的,我把它與我從未聽說過的東西混淆過......我會查找汽車拳擊,謝謝。 – Jeremy 2012-04-24 14:19:42

回答

2

自動裝箱是語言規範的一部分,不能擴展(無需更改編譯器)

+0

謝謝。似乎它應該是一個功能,但。奇怪。 – Jeremy 2012-04-24 17:51:13

+0

這是許多語言的功能。 Java往往是功能差,並避免那些增加設計的複雜性,自動裝箱足夠混亂,自定義自動裝箱更容易混淆而不是有用的。 – 2012-04-25 05:29:43

+0

我必須同意,我只是想整齊的動態編碼。 = X – Jeremy 2012-04-28 13:15:04