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

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

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

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

1.什么是反射?

反射其實(shí)就是動態(tài)的加載類,我們在寫JDBC的時候加載驅(qū)動Class.forName("xxx")時就涉及到了反射。

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

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

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

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

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

4. 在運(yùn)行時調(diào)用任意一個對象的方法。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對象的三種犯法
  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緩存操作技巧匯總

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

相關(guān)文章

最新評論

德州市| 上饶县| 云霄县| 突泉县| 定陶县| 广南县| 基隆市| 永定县| 区。| 阳城县| 巴里| 新民市| 昌乐县| 资源县| 荔浦县| 鹤山市| 大英县| 黔西| 中山市| 丁青县| 怀来县| 巴南区| 西宁市| 平乐县| 许昌县| 英吉沙县| 通州市| 铜山县| 社会| 万山特区| 玛多县| 宁武县| 华坪县| 鲁甸县| 秀山| 克拉玛依市| 盘山县| 长汀县| 东乡| 洪江市| 正蓝旗|