private static class TestInner{ private String pv = "私有变量";}public static void main(String[] args) throws Exception{ //类继承、接口实现关系,Map可从HashMap转换 System.out.println("isAssignableFrom():"+Map.class.isAssignableFrom(HashMap.class)); //基本类型boolean, byte, char, short, int, long, float, and double. System.out.println("isPrimitive():"+int.class.isPrimitive()); //方法内部类 class TestLocal{}; System.out.println("isLocalClass():"+TestLocal.class.isLocalClass()); //成员内部类 System.out.println("isMemberClass():"+TestInner.class.isMemberClass()); /*AOP, generics, enums uses Java synthetic http://javapapers.com/core-java/java-synthetic-class-method-field/*/ TestInner inner = new TestInner(); String pv = inner.pv;//不访问私有变量将不生成方法 Class c = inner.getClass(); Method[] methods = c.getDeclaredMethods(); for (Method m : methods) { System.out.println("isSynthetic(): " + m.isSynthetic() + " //" + m); } //TODO:何时Class.isSynthetic=true}
Class类片段参考:
private static final int SYNTHETIC = 0x00001000;//16的3次方=4096public native int getModifiers();public boolean isSynthetic() { return (getModifiers() & SYNTHETIC) != 0;}
Modifier类片段参考:
public static final int PUBLIC 1 public static final int PROTECTED 4 public static final int PRIVATE 2public static final int ABSTRACT 1024 public static final int STATIC 8 public static final int FINAL 16public static final int STRICT 2048private static final int CLASS_MODIFIERS = Modifier.PUBLIC | Modifier.PROTECTED | Modifier.PRIVATE | Modifier.ABSTRACT | Modifier.STATIC | Modifier.FINAL | Modifier.STRICT;public static int classModifiers() { return CLASS_MODIFIERS;}