亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

反射.........................

標簽:
Java

Class类:
类是对象 java.lang.Class的实例对象 它的实例就是每一个对象所属的类 那这个对象怎么表示呢?
//第一种
User.class int.class String.class..... Integer.calss 完全跟int不一样 void.class关键字
//第二种 已知对象
user.getClass();
//第三种
class.forNmae("java.util.Date");
以上三种方法都可以通过newInstance()方法创建对象 如果不知道具体创建的对象是哪个 就可以用多态
动态加载类(运行时刻):
第三种是动态加载类 newInstance()
静态加载类(编译时)
new创建对象是编译时加载 如果找不到类就会报错

基本API通过这些api 拿到类的全部信息
public static void main(String[] args) throws ClassNotFoundException {
Class d=Demo2.class;
Method [] m=d.getMethods();//父 子的所有public方法
Method [] m1=d.getDeclaredMethods();//只有自己的所有方法 不管访问权限
/**

  • 获取返回值 方法名 获取参数类型
  • import java.lang.reflect.Method;
  • */
    for(int i=0;i<m.length;i++)
    {
    Class returnType=m[i].getReturnType();
    Class []par=m[i].getParameterTypes();
    System.out.println(returnType.getName());

     }
     /***
  • 成员变量
  • import java.lang.reflect.Field;
    /
    Field[] fs=d.getFields();//public的 父子
    Field [] fss=d.getDeclaredFields();//不问返回值 自己
    for(Field field:fss)
    {
    Class typeNmae=field.getType();
    }
    /

    构造函数
    import java.lang.reflect.Constructor;
    /
    Constructor []cs=d.getDeclaredConstructors();
    }
    方法的反射操作:
    @SuppressWarnings("unchecked")
    public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
    Class d=Demo2.class;
    /
  • 如何获取某一个方法===方法的名称和参数列表决定一个方法
  • method.invoke(名称,参数)
    */
    try {
    Method m=d.getMethod("say", new Class[]{int.class,int.class});

                 //方法反射就是用m对象来进行方法调用  效果完成相同
                 //传对象
                 Demo2 demo=new Demo2();
                 m.invoke(demo, new Class[]{int.class,int.class});//返回值本来方法返回什么就是什么
          } catch (NoSuchMethodException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
          } catch (SecurityException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
          }
點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消