日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java 学习笔记 反射与迭代器

發布時間:2025/4/14 java 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 学习笔记 反射与迭代器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

反射

使用反射獲得Class類

Class cls = Class.forName("全類名") //包括包名 Class cls = xx.Class;//xx代表類名 Class cls = 對象.getClass();

使用反射獲得構造方法

有個構造方法如:

public Book(String bookName, String author,double price) {this.bookName = bookName;this.author = author;this.price = ((int) price);}

在使用反射來獲得的構造方法的時候需要與構造方法中的參數類型進行對應

Constructor declaredConstructor = cls.getDeclaredConstructor(String.class, String.class, double.class); //或者使用包裝類的靜態常量TYPE,表示的是該包裝類的基本類型 Constructor declaredConstructor = cls.getDeclaredConstructor(String.class, String.class, Double.TYPE);

使用反射獲得一個對象實例

例如

Student student = cls.newInstance();

使用反射獲得屬性名(字段名,成員變量名)

以下的方法都是返回Field數組

  • getDeclaredFields()
    返回所有的字段名,但不包括繼承的屬性名(字段名,成員變量名)
  • getFields()
    返回所有的字段名,包括繼承的屬性名(字段名,成員變量名)

使用反射獲得方法

以下兩種方法均是返回一個Method數組

  • cls.getMethods()
    包括繼承的方法
  • cls.getDeclaredMethods()
    不包括繼承的方法
  • cls.getMethod(String name,parameterTypes)
    返回指定方法名的Method,name為方法名,后面參數為該方法的參數列表,參數列表記得按照順序

獲得類中某個方法的返回類型

  • method.getReturnType()
    返回該方法的返回類型,是一個Class對象(返回類型對應的class)
//如 public String hello(){... }; method.getReturnType();//返回的就是java.lang.String
  • method.getGenericReturnType()
    返回的是一個Type類對象

    使用反射調用方法

  • method.invoke(Object o...)
    Object是參數列表

獲得類中getXxx方法并調用

獲得所有的字段名,根據字段名拼接成正確的getXxx方法名,之后獲得指定方法名的Method,之后調用即可

Student student = new Student(); Class<? extends Student> c1 = student.getClass(); Field[] declaredFields = c1.getDeclaredFields(); for (Field declaredField : declaredFields) {String name = declaredField.getName();//使用IDEA生成的set/get方法都是遵循駝峰命名法,我們的命名也得按照駝峰命名法//這樣,我們只需要把第一個單詞的開頭字母轉為大寫的字母即可獲得正確的方法名,之后調用即可String a = name.substring(0, 1).toUpperCase();//首字母大寫String b = name.substring(1);//截取剩余的字符串Method method = c1.getMethod("get" + a+b);//拼接,并查找匹配的方法method.invoke(); }

list 迭代器

listiterator和iterator
listiterator繼承iterator,是iterator的增強版
listiterator可以雙端遍歷,通過list.listIterator()方法返回,方法中可以帶一個指定下標的數,比iterator要方便

如果想要從末尾向前找,可以定義迭代器的開始為list的末尾,之后往前查找

ListIterator listIteratorlists.listIterator(lists.size()); while (listIterator.hasPrevious()) {System.out.println(listIterator.previous()); }

轉載于:https://www.cnblogs.com/kexing/p/10617400.html

總結

以上是生活随笔為你收集整理的Java 学习笔记 反射与迭代器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。