Integer.class vs int.class

前端 未结 4 1201
悲&欢浪女
悲&欢浪女 2020-12-01 05:15

What is the difference between Integer.class, Integer.TYPE and int.class?

acc to me

  1. Integer.class i
4条回答
  •  北荒
    北荒 (楼主)
    2020-12-01 06:01

    Integer.class is, as you say, a reference to the Class object for the Integer type.

    int.class is, similarity, a reference to the Class object for the int type. You're right that this doesn't sound right; the primitives all have a Class object as a special case. It's useful for reflection, if you want to tell the difference between foo(Integer value) and foo(int value).

    Integer.TYPE (not Integer.type, mind you) is just a shortcut for int.class.

    You can get a sense of this with a simple program:

    public class IntClasses {
      public static void main(String[] args) {
        Class a = int.class;
        Class b = Integer.TYPE;
        Class c = Integer.class;
    
        System.out.println(System.identityHashCode(a));
        System.out.println(System.identityHashCode(b));
        System.out.println(System.identityHashCode(c));
      }
    }
    

    Example output (it'll be different each time, but the first two will always be the same, and the third will virtually always be different):

    366712642
    366712642
    1829164700
    

提交回复
热议问题