2012-04-24 4 views
2

이것을 고려하십시오 : 나는이 JunkValue<HappyObject> 매개 변수가 있다면 난 그냥 HappyObject 객체 매개 변수를 대신 사용할 수있는 내 컴파일러를 말하고 싶어자동 과부하가 가능합니까?

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

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

:

지금
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; 
       }}; 
    } 
} 

내가 쉽게이 두 가지 방법을 만들 수 있습니다 이 효과에.

나는 Number=new Number(1) 대신 Number=1;을 할 수 있다는 아이디어를 얻었으며, Number를 확장했을 때부터 많은 만족감을 얻었습니다. 난 그냥 숫자 대신에 같은 효과를 원한다.

감사합니다.

+4

Java에서 연산자의 오버로드가 없습니다. 당신은 자동 권투와 혼동하고있다 –

+0

그래, 내가 들어 본 적이없는 뭔가와 혼란스러워 ... 나는 자동 권투, 감사합니다. – Jeremy

답변

2

오토 박싱은 언어 사양의 일부이므로 컴파일러를 변경하지 않고도 확장 할 수 없습니다.

+0

감사합니다. 비록 그것이 특징이어야하는 것처럼 보인다. 이상한. – Jeremy

+0

그것은 많은 언어의 기능입니다. Java는 기능이 좋지 않은 경향이 있으며 디자인에 복잡성을주는 것을 피합니다. Autoboxing은 혼란스럽고 맞춤형 자동 권투가 유용 할 때보 다 혼란 스러울 수 있습니다. –

+0

나는 동의해야한다, 나는 단지 깔끔한 동적 코딩이 필요하다. = x – Jeremy

관련 문제