2012-04-24 24 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