日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

Java的反射中一些重要的方法

出處:達人科技 發(fā)布于:2016-01-19 10:23:34

    原理

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

  Java中有個Object 類,是所有Java 類的繼承根源,其內(nèi)聲明了數(shù)個應該在所有Java 類中被改寫的方法:hashCode、equals、clone、toString、getClass等。其中g(shù)etClass返回一個Class 對象。Class對象十分特殊。他是Java中所有類的實例,借助它可以實現(xiàn)對一個對象的操作。

  實例

  1. 準備工作

  public class Person {

  private String name;

  private String age;

  private void shot{

  System.out.println("!!!");

  }

  protected void shot1 {

  System.out.println("111");

  }

  public String getAge {

  return age;

  }

  public String getName {

  return name;

  }

  public void setAge(String age) {

  this.age = age;

  }

  public void setName(String name) {

  this.name = name;

  }

  }

  2. 創(chuàng)建Class對象

  Person person = new Person;

  Class class2 = person.getClass;

  Class class1 = Class.forName("test0118.testR.Person");

  Class class3 = Person.class;

  3. 對對象屬性進行操作

  獲取類的屬性

  getFields只能訪問類中聲明為公有的字段,私有的字段它無法訪問,能訪問從其它類繼承來的公有方法.

  getDeclaredFields能訪問類中所有的字段,與public,private,protect無關(guān),不能訪問從其它類繼承來的方法

  Field fields = class1.getDeclaredFields;

  Field fields2 = class1.getFields;

  for (Field field : fields) {

  System.out.println(Modifier.toString(field.getModifiers) + field.getName);

  }

  for(Field field:fields2){

  System.out.println(Modifier.toString(field.getModifiers)+field.getName);//由于Person類中并沒有公有字段,所以該循環(huán)不輸出任何值

  }

  /**

  輸出:

  privatename

  privateage

  */

  獲取類屬性的修飾符

  上述代碼中有一個方法Modifier.toString(field.getModifiers)即是獲取該屬性的修飾符,field.getModifiers返回一個int值,將該值轉(zhuǎn)化為對應的描述要用到Modifier.toString方法。

  對類的屬性進行操作

  Field field = class1.getField("name");

  Object object = class1.newInstance;

  field.setAccessible(true);//打破了封裝的特性,允許對私有屬性直接進行操作

  field.set(object, "123");

  System.out.println(field.get(object));

  獲取類的方法

  getMethods返回某個類的所有公用(public)方法包括其繼承類的公用方法,當然也包括它所實現(xiàn)接口的方法。

  getDeclaredMethods對象表示的類或接口聲明的所有方法,包括公共、保護、默認(包)訪問和私有方法,但不包括繼承的方法。當然也包括它所實現(xiàn)接口的方法。

  Method methods = class1.getDeclaredMethods;

  Method methods2 = class1.getMethods;

  獲取方法的參數(shù)和返回值的類型

  method.getParameterTypes:獲取方法參數(shù)類型,返回Class數(shù)組

  method.getReturnType:獲取方法返回值類型,返回Class對象

  Class ty = method.getParameterTypes;

  Class rty = method.getReturnType;

  Object object = class1.newInstance;

  Method method = class1.getMethod("setName", Class.forName("java.lang.String"));

  method.invoke(object, "123123");

  Method method2 = class1.getMethod("getName");

  System.out.println((String) method2.invoke(object));

  System.out.println(method.getReturnType);

 

關(guān)鍵詞:JAVA反射機制編程語言

版權(quán)與免責聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責任。

如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

javaweb開發(fā),nodemcu到底怎么連上網(wǎng)絡進行物聯(lián)網(wǎng)開發(fā)?
廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務:
賣家服務:
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時間周一至周五
9:00-17:30

關(guān)注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!