您的位置:首页 > 其它

Class.isXXX方法

2016-01-11 17:57 260 查看
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次方=4096
public 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 2
public static final int ABSTRACT 1024
public static final int STATIC 8
public static final int FINAL 16
public static final int STRICT 2048
private 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  反射 isSynthetic