Why doesn't Java autoboxing extend to method invocations of methods of the autoboxed types?

前端 未结 8 1072
时光取名叫无心
时光取名叫无心 2020-12-30 18:19

I want to convert a primitive to a string, and I tried:

myInt.toString();

This fails with the error:

int cannot be derefere         


        
8条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-30 19:17

    seems like a shortcoming of the specification to me

    There are more shortcomings and this is a subtle topic. Check this out:

    public class methodOverloading{
       public static void hello(Integer x){
          System.out.println("Integer");
       }
    
       public static void hello(long x){
          System.out.println("long");
       }
    
       public static void main(String[] args){
          int i = 5;
          hello(i);
       }
    }
    

    Here "long" would be printed (haven't checked it myself), because the compiler choses widening over autoboxing. Be careful when using autoboxing or don't use it at all!

提交回复
热议问题