日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
java反射三種方法有哪些

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

Java反射機(jī)制主要提供了以下三種功能:

1、在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象所屬的類(lèi);

2、在運(yùn)行時(shí)構(gòu)造任意一個(gè)類(lèi)的對(duì)象;

3、在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法。

下面將詳細(xì)介紹這三種功能的實(shí)現(xiàn)方法。

在運(yùn)行時(shí)判斷任意一個(gè)對(duì)象所屬的類(lèi)

要獲取對(duì)象的類(lèi)信息,可以使用getClass()方法。

Object obj = new String("Hello, World!");
Class clazz = obj.getClass();
System.out.println(clazz); // 輸出:class java.lang.String

在運(yùn)行時(shí)構(gòu)造任意一個(gè)類(lèi)的對(duì)象

要構(gòu)造一個(gè)類(lèi)的對(duì)象,首先需要獲取該類(lèi)的Class對(duì)象,然后通過(guò)newInstance()方法創(chuàng)建對(duì)象。

try {
    Class clazz = Class.forName("java.lang.String");
    Object obj = clazz.newInstance();
    System.out.println(obj); // 輸出:null
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
    e.printStackTrace();
}

注意:newInstance()方法已經(jīng)過(guò)時(shí),建議使用getDeclaredConstructor().newInstance()方法替代。

try {
    Class clazz = Class.forName("java.lang.String");
    Object obj = clazz.getDeclaredConstructor().newInstance();
    System.out.println(obj); // 輸出:null
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) {
    e.printStackTrace();
}

在運(yùn)行時(shí)調(diào)用任意一個(gè)對(duì)象的方法

要調(diào)用對(duì)象的方法,首先需要獲取該對(duì)象的Class對(duì)象,然后通過(guò)getMethod()方法獲取Method對(duì)象,最后通過(guò)invoke()方法調(diào)用方法。

try {
    Class clazz = Class.forName("java.lang.String");
    Object obj = clazz.getDeclaredConstructor().newInstance();
    Method method = clazz.getMethod("length");
    Integer length = (Integer) method.invoke(obj);
    System.out.println(length); // 輸出:0
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) {
    e.printStackTrace();
}

Java反射機(jī)制是一種強(qiáng)大的工具,可以在運(yùn)行時(shí)動(dòng)態(tài)地獲取類(lèi)的信息、創(chuàng)建對(duì)象和調(diào)用方法,反射操作相對(duì)復(fù)雜且效率較低,因此在實(shí)際開(kāi)發(fā)中應(yīng)謹(jǐn)慎使用。


文章名稱(chēng):java反射三種方法有哪些
URL標(biāo)題:http://www.5511xx.com/article/dpidpcg.html