java進階三:反射

來源:互聯網
上載者:User

標籤:system   構造方法   []   field類   位元組碼   執行個體   使用方法   建立對象   point   

1、得到各個位元組碼對應的執行個體對象(Class類型)的三種方式,樣本如下:

  類名.class,比如,System.class

  對象.getClass(),比如,new Date().getClass()

  Class.forName("類名"),比如,Class.forName("java.util.Date")

 

2、Constructor類的使用,Constructor類代表某個類中的一個構造方法

  得到某個類所有的構造方法:

    Constructor[] constructors=Class.forName("java.lang.String").getConstructors();

  得到某一個構造方法:

    Constructor constructor=Class.forName("java.lang.String").getConstructor(StringBuffer.class);

  建立執行個體對象:

    普通方式:

    String str=new String(new StringBuffer("abc"));

    使用反射:

    Constructor constructor=Class.forName("java.lang.String").getConstructor(StringBuffer.class);
            String str1=(String) constructor.newInstance(new StringBuffer("abc"));

直接使用Class.newInstance()方法:

  String str2=(String)Class.forName("java.lang.String").newInstance();

  該方法內部是先得到預設的構造方法,然後用該構造方法建立對象執行個體

 

3、Field類代表某個類中的一個成員變數,使用方法如下:

class Point{    public int x;    private int y;    public Point() {}    public Point(int x,int y){        this.x=x;        this.y=y;    }}public class Demo01 {    public static void main(String[] args) throws Exception {        Point point=new Point(1,2);        Field xField=Class.forName("com.ly.java.enhance.reflection.Point").getField("x");        System.out.println(xField.get(point));
     //得到私人屬性 Field yField=Class.forName("com.ly.java.enhance.reflection.Point").getDeclaredField("y"); yField.setAccessible(true); System.out.println(yField.get(point)); }}

 

4、Method類代表某個類中的一個成員方法,使用方法如下:

  得到類中的某一個方法:

    Method charAt=Class.forName("java.lang.String").getMethod("charAt", int.class);

  調用類中的某一個方法:

    String str="abc";

    普通方式:System.out.println(str.charAt(1));

    使用反射:

    Method charAt=Class.forName("java.lang.String").getMethod("charAt", int.class);
         System.out.println(charAt.invoke(str, 1));

 

    

  

 

  

java進階三:反射

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.