国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java 反射機制的實例詳解

Java 反射機制的實例詳解

2021-01-18 10:07子沐阿 Java教程

這篇文章主要介紹了Java 反射機制的實例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握反射機制,需要的朋友可以參考下

Java 反射機制的實例詳解

前言

今天介紹下Java的反射機制,以前我們獲取一個類的實例都是使用new一個實例出來。那樣太low了,今天跟我一起來學(xué)習(xí)學(xué)習(xí)一種更加高大上的方式來實現(xiàn)。

正文

Java反射機制定義

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

反射機制的優(yōu)點與缺點

為什么要用反射機制?直接創(chuàng)建對象不就可以了嗎,這就涉及到了動態(tài)與靜態(tài)的概念

靜態(tài)編譯:在編譯時確定類型,綁定對象,即通過。

動態(tài)編譯:運行時確定類型,綁定對象。動態(tài)編譯最大限度發(fā)揮了java的靈活性,體現(xiàn)了多態(tài)的應(yīng)用,有以降低類之間的藕合性。

優(yōu)點

可以實現(xiàn)動態(tài)創(chuàng)建對象和編譯,體現(xiàn)出很大的靈活性,特別是在J2EE的開發(fā)中它的靈活性就表現(xiàn)的十分明顯。比如,一個大型的軟件,不可能一次就把把它設(shè)計的很完美,當這個程序編譯后,發(fā)布了,當發(fā)現(xiàn)需要更新某些功能時,我們不可能要用戶把以前的卸載,再重新安裝新的版本,假如這樣的話,這個軟件肯定是沒有多少人用的。采用靜態(tài)的話,需要把整個程序重新編譯一次才可以實現(xiàn)功能的更新,而采用反射機制的話,它就可以不用卸載,只需要在運行時才動態(tài)的創(chuàng)建和編譯,就可以實現(xiàn)該功能。

缺點

對性能有影響。使用反射基本上是一種解釋操作,我們可以告訴JVM,我們希望做什么并且它滿足我們的要求。這類操作總是慢于只直接執(zhí)行相同的操作。

理解Class類和類類型

想要了解反射首先理解一下Class類,它是反射實現(xiàn)的基礎(chǔ)。

類是java.lang.Class類的實例對象,而Class是所有類的類(There is a class named Class) 對于普通的對象,我們一般都會這樣創(chuàng)建和表示:

?
1
Code code1 = new Code();

上面說了,所有的類都是Class的對象,那么如何表示呢,可不可以通過如下方式呢:

?
1
Class c = new Class();

但是我們查看Class的源碼時,是這樣寫的:

?
1
2
3
private Class(ClassLoader loader) {
classLoader = loader;
}

可以看到構(gòu)造器是私有的,只有JVM可以創(chuàng)建Class的對象,因此不可以像普通類一樣new一個Class對象,雖然我們不能new一個Class對象,但是卻可以通過已有的類得到一個Class對象,共有三種方式,如下:

?
1
Class c1 = Code.class;

這說明任何一個類都有一個隱含的靜態(tài)成員變量class,這種方式是通過獲取類的靜態(tài)成員變量class得到的

?
1
Class c2 = code1.getClass();

code1是Code的一個對象,這種方式是通過一個類的對象的getClass()方法獲得的

?
1
Class c3 = Class.forName(“com.trigl.reflect.Code”);

這種方法是Class類調(diào)用forName方法,通過一個類的全量限定名獲得 ,這里,c1、c2、c3都是Class的對象,他們是完全一樣的,而且有個學(xué)名,叫做Code的類類型(class type)。 這里就讓人奇怪了,前面不是說Code是Class的對象嗎,而c1、c2、c3也是Class的對象,那么Code和c1、c2、c3不就一樣了嗎?為什么還叫Code什么類類型?這里不要糾結(jié)于它們是否相同,只要理解類類型是干什么的就好了,顧名思義,類類型就是類的類型,也就是描述一個類是什么,都有哪些東西,所以我們可以通過類類型知道一個類的屬性和方法,并且可以調(diào)用一個類的屬性和方法,這就是反射的基礎(chǔ)。

舉個簡單例子代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class ReflectDemo {
public static void main(String[] args) throws ClassNotFoundException {
//第一種:Class c1 = Code.class;
Class class1=ReflectDemo.class;
System.out.println(class1.getName());
 
  //第二種:Class c2 = code1.getClass();
  ReflectDemo demo2= new ReflectDemo();
  Class c2 = demo2.getClass();
  System.out.println(c2.getName());
 
  //第三種:Class c3 = Class.forName("com.trigl.reflect.Code");
  Class class3 = Class.forName("com.tengj.reflect.ReflectDemo");
  System.out.println(class3.getName());
}
}

執(zhí)行結(jié)果:

?
1
2
3
com.tengj.reflect.ReflectDemo
com.tengj.reflect.ReflectDemo
com.tengj.reflect.ReflectDemo

Java反射相關(guān)操作

前面我們知道了怎么獲取Class,那么我們可以通過這個Class干什么呢?

總結(jié)如下:

獲取成員方法Method
獲取成員變量Field
獲取構(gòu)造函數(shù)Constructor

下面來具體介紹

獲取成員方法信息

單獨獲取某一個方法是通過Class類的以下方法獲得的:

?
1
2
3
public Method getDeclaredMethod(String name, Class c){
 
}

如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://geek.csdn.net/news/detail/239924

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美亚洲视频在线观看 | 欧美在线99 | 午夜免费福利视频 | 福利在线小视频 | 欧美伦理电影一区二区 | 成人亚洲视频 | 黄色毛片儿 | 欧美日韩国产精品 | 久久一区 | 在线欧美亚洲 | 欧美色综合天天久久综合精品 | 成人久久精品 | 成人激情在线视频 | 不卡的一区二区 | 国产精品永久 | 欧美精品一区二区三区四区在线 | 精品久久精品久久 | 久久三区| 精品一区二区久久 | 亚洲综合中文字幕在线观看 | 99热69 | 国产在线小视频 | 免费视频一区二区 | 精品久久久久久久久久久久久久 | 自拍偷拍 亚洲 | 国产成在线观看免费视频 | 亚洲综合视频 | 综合色区| 精品自拍视频 | 日本久久网 | 国产日韩精品在线 | 国产成人一区二区在线观看 | 成人h动漫在线看 | 自拍偷拍欧美 | 国产模特私拍xxxx | 国产日产精品一区二区三区四区 | 久久久久午夜 | 国产精品一区二区三区免费 | 综合色在线 | 欧美视频区 | 国产精品毛片无码 |