Class.isXXX方法

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;
}


转载于:https://my.oschina.net/h2do/blog/600870

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值