Java 反射相关API记录

107 阅读1分钟

Class 对象相关

String getCanonicalName()

返回 Java 语言规范定义的基础类的规范名称, 比如 String.class, 返回的就是String,但是有两种特殊情况

  • 匿名类或内部匿名类返回null
  • 数组类型,对于数组元素类型,如果没有 canonical name 也返回null
private interface CallAdapter {
    String responseType();
}


public static void main(String[] args) throws IOException {
    addAdapter(new CallAdapter() {
        @Override
        public String responseType() {
            return null;
        }
    });
    
    
    System.out.println("CanonicalName : " + String.class.getCanonicalName());

    int[] intArray = new int[4];
    System.out.println("CanonicalName : " + intArray.getClass().getCanonicalName());
}


public static void addAdapter(CallAdapter adapter) {
    String canonicalName = adapter.getClass().getCanonicalName();
    System.out.println("CanonicalName : " + canonicalName);
}	

依次输出

  • CanonicalName : null
  • CanonicalName : java.lang.String
  • CanonicalName : int[]