欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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語(yǔ)言的反射機(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)文章

  • 解析Spring中的靜態(tài)代理和動(dòng)態(tài)代理

    解析Spring中的靜態(tài)代理和動(dòng)態(tài)代理

    學(xué)習(xí) Spring 的過(guò)程中,不可避免要掌握代理模式。這篇文章總結(jié)一下代理模式。顧名思義,代理,就是你委托別人幫你辦事,所以代理模式也有人稱作委托模式的。比如領(lǐng)導(dǎo)要做什么事,可以委托他的秘書去幫忙做,這時(shí)就可以把秘書看做領(lǐng)導(dǎo)的代理
    2021-06-06
  • itextpdf提取PDF文件中的任意頁(yè)碼實(shí)現(xiàn)示例

    itextpdf提取PDF文件中的任意頁(yè)碼實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了itextpdf提取PDF文件中的任意頁(yè)碼實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • IntelliJ IDEA基于Scala實(shí)現(xiàn)Git檢查工具

    IntelliJ IDEA基于Scala實(shí)現(xiàn)Git檢查工具

    這篇文章主要介紹了如何使用Scala實(shí)現(xiàn)自定義的Git檢查工具,大家可以基于本文的示例進(jìn)行擴(kuò)展與實(shí)現(xiàn),也可以進(jìn)行其他應(yīng)用方向的嘗試,感興趣的可以了解下
    2023-08-08
  • jvm類加載器基礎(chǔ)解析

    jvm類加載器基礎(chǔ)解析

    這篇文章主要介紹了jvm類加載器基礎(chǔ)解析,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • 淺析Java如何優(yōu)雅的避免那無(wú)處不在的空指針異常

    淺析Java如何優(yōu)雅的避免那無(wú)處不在的空指針異常

    在Java編程語(yǔ)言中,NullPointerException(簡(jiǎn)稱NPE)是一種常見的運(yùn)行時(shí)異常,本文主要來(lái)和大家講講如何優(yōu)雅的避免這些空指針異常,需要的可以參考下
    2024-03-03
  • Java中正則表達(dá)式的使用和詳解(上)

    Java中正則表達(dá)式的使用和詳解(上)

    這篇文章主要介紹了Java中正則表達(dá)式的使用和詳解,包括匹配驗(yàn)證驗(yàn)證email是否正確,在字符串中查詢字符或者字符串的代碼實(shí)例,需要的朋友可以參考下
    2017-04-04
  • Java舉例講解分治算法思想

    Java舉例講解分治算法思想

    分治算法的基本思想是將一個(gè)規(guī)模為N的問(wèn)題分解為K個(gè)規(guī)模較小的子問(wèn)題,這些子問(wèn)題相互獨(dú)立且與原問(wèn)題性質(zhì)相同。求出子問(wèn)題的解,就可得到原問(wèn)題的解,本篇文章我們就用分治算法來(lái)實(shí)現(xiàn)歸并排序快速排序以及二分搜索算法
    2022-04-04
  • 解決mybatis 中collection嵌套collection引發(fā)的bug

    解決mybatis 中collection嵌套collection引發(fā)的bug

    這篇文章主要介紹了解決mybatis 中collection嵌套collection引發(fā)的bug,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • 一篇文章帶你入門Java數(shù)據(jù)類型

    一篇文章帶你入門Java數(shù)據(jù)類型

    下面小編就為大家?guī)?lái)一篇Java的基本數(shù)據(jù)類型)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-08-08
  • java統(tǒng)計(jì)文件中每個(gè)字符出現(xiàn)的個(gè)數(shù)

    java統(tǒng)計(jì)文件中每個(gè)字符出現(xiàn)的個(gè)數(shù)

    這篇文章主要為大家詳細(xì)介紹了java統(tǒng)計(jì)文件中每個(gè)字符出現(xiàn)的個(gè)數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03

最新評(píng)論