Java组件化开发教程,Java反射机制详解(由浅入深

}



private String getSonName(){

    return mSonName;

}

}




1\. 获取类的所有变量信息

--------------



/**

  • 通过反射获取类的所有变量

*/

private static void printFields(){

//1.获取并输出类的名称

Class mClass = SonClass.class;

System.out.println("类的名称:" + mClass.getName());



//2.1 获取所有 public 访问权限的变量

// 包括本类声明的和从父类继承的

Field[] fields = mClass.getFields();



//2.2 获取所有本类声明的变量(不问访问权限)

//Field[] fields = mClass.getDeclaredFields();



//3. 遍历变量并输出变量信息

for (Field field :

        fields) {

    //获取访问权限并输出

    int modifiers = field.getModifiers();

    System.out.print(Modifier.toString(modifiers) + " ");

    //输出变量的类型及变量名

    System.out.println(field.getType().getName()

             + " " + field.getName());

}

}




以上代码注释很详细,就不再解释了。需要注意的是注释中 2.1 的 `getFields()` 与 2.2的 `getDeclaredFields()` 之间的区别,下面分别看一下两种情况下的输出。看之前强调一下:  

`SonClass` extends `FatherClass` extends `Object` :



*   调用 `getFields()` 方法,输出 `SonClass` 类以及其所继承的父类( 包括 `FatherClass` 和 `Object`) 的 `public` 方法。注:`Object` 类中没有成员变量,所以没有输出。

    

    ```

    类的名称:obj.SonClass

    public java.lang.String mSonBirthday

    public java.lang.String mFatherName

    public int mFatherAge

    ```

    

*   调用 `getDeclaredFields()` , 输出 `SonClass` 类的所有成员变量,不问访问权限。

    

    ```

    类的名称:obj.SonClass

    private java.lang.String mSonName

    protected int mSonAge

    public java.lang.String mSonBirthday

    ```

    



2\. 获取类的所有方法信息

--------------



/**

  • 通过反射获取类的所有方法

*/

private static void printMethods(){

//1.获取并输出类的名称

Class mClass = SonClass.class;

System.out.println("类的名称:" + mClass.getName());



//2.1 获取所有 public 访问权限的方法

//包括自己声明和从父类继承的

Method[] mMethods = mClass.getMethods();



//2.2 获取所有本类的的方法(不问访问权限)

//Method[] mMethod
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值