最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java基礎(chǔ)之反射原理與用法詳解

 更新時(shí)間:2020年02月07日 10:30:52   作者:扎心了,老鐵  
這篇文章主要介紹了Java基礎(chǔ)之反射原理與用法,結(jié)合實(shí)例形式詳細(xì)分析了java反射的相關(guān)概念、原理、使用方法與操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Java基礎(chǔ)之反射原理與用法。分享給大家供大家參考,具體如下:

1.什么是反射?

反射其實(shí)就是動(dòng)態(tài)的加載類,我們?cè)趯慗DBC的時(shí)候加載驅(qū)動(dòng)Class.forName("xxx")時(shí)就涉及到了反射。

反射機(jī)制是在運(yùn)行狀態(tài)中,對(duì)于任意一個(gè)類,都能夠知道這個(gè)類的所有屬性和方法;對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用它的任意一個(gè)方法和屬性;這種動(dòng)態(tài)獲取的信息以及動(dòng)態(tài)調(diào)用對(duì)象的方法的功能稱為java語言的反射機(jī)制。

2.反射機(jī)制能做什么?

1. 在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象的所屬的類Class。

2. 在運(yùn)行時(shí)判斷構(gòu)造任意一個(gè)類的對(duì)象Constructor。

3. 在運(yùn)行時(shí)判斷任意一個(gè)類所具有的成員變量Field和方法Method。

4. 在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法。method.invoke(object,args)

3.反射機(jī)制相關(guān)的API

獲得完整的包名和類名

Student.java

package com.reflect.test;
public class Student {
  private int id;
  private String name;
  public Student() {}
  public Student(int id, String name) {
    super();
    this.id = id;
    this.name = name;
  }
  public int getId() {
    return id;
  }
  public void setId(int id) {
    this.id = id;
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  @Override
  public String toString() {
    return "Student [id=" + id + ", name=" + name + "]";
  }
}

Test.java

package com.reflect.test;
public class Test {
  Student stu = new Student();
  public static void main(String[] args) {
    Test test = new Test();
    test.getClassName();
  }
  //獲得完整的包名和類名
  public void getClassName() {
    System.out.println(stu.getClass().getName());
  }
}

運(yùn)行結(jié)果

com.reflect.test.Student

獲取Class的三種方法

   public static void main(String[] args) {
    Test test = new Test();
    test.getStudentClass();
  }
  //獲取Class對(duì)象的三種犯法
  public void getStudentClass() {
    //第一種方法,forName
    Class<?> class1;
    try {
      class1 = Class.forName("com.reflect.test.Student");
      System.out.println("class1:"+class1);
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    }
    //第二種方法,class
    Class<?> class2 = Student.class;
    System.out.println("class2:"+class2);
    //第三種方法,getClass()
    Student stu1 = new Student();
    Class<?> class3 = stu1.getClass();
    System.out.println("class3:"+class3);
  }

運(yùn)行結(jié)果

class1:class com.reflect.test.Student
class2:class com.reflect.test.Student
class3:class com.reflect.test.Student

更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論

仁怀市| 罗定市| 西盟| 连江县| 健康| 吉水县| 峨边| 平阴县| 吴旗县| 郓城县| 邛崃市| 桦甸市| 南昌市| 夏津县| 菏泽市| 怀柔区| 兰考县| 莱阳市| 博乐市| 习水县| 清水河县| 堆龙德庆县| 察雅县| 砚山县| 河源市| 宜州市| 涡阳县| 丹凤县| 广昌县| 大连市| 新巴尔虎右旗| 尼勒克县| 琼结县| 墨玉县| 卫辉市| 新泰市| 石狮市| 孟州市| 锦州市| 和平区| 凤山县|