javaclass的方法
⑴ java中的Class類的newinstance方法返回值為什麼是object類型的
返回的是Class<T>,這里的T是泛型,所以只有返回Object才能滿足接收任何類型的對象
⑵ java class 類的方法使用報錯!
因為你的button是一個非static(靜態)內部類(位於K_8_13的內部),而java的語法規定:要通過一個外部類的對象才能創建一個非靜態內部類的對象。
有以下幾種修改方式:
1.
將類button的定義放到類K_8_13的外面。當然,這樣的話,得去掉public。
2.
將類button定義成靜態內部類,public class button改成public static class button。
3.
通過外部類的對象創建一個內部類的對象,第17的new button()改成new K_8_13().new button()。
可任選一種。
⑶ 獲得Class類對象的幾種方法
每一個class都有一個Class對象。一個java文件經過編譯,再生成的.class文件中,就會創建一個Class對象。只有一個。他表示整個類的類型信息。
那麼通常我們創建對象的方式又有幾種呢?
五種:
1.通過new 語句創建對象。
2.通過靜態工廠方法創建,比如A.getNewInstance();
3.通過反射技術來實現。可以調用Class類或Constructor類的newInstance()方法。
4.通過調用對象的clone()方法
5.利用I/O流技術的反序列化來實現。
回歸正題獲取Class對象(實例)有三種方法:
1.通過class的方式創建Class實例:類名.class
2.通過對象的getClass()方法獲得。
3.通過Class類的forName()方法來獲得。
反射:可以說是一中技術手段,利用反射可以訪問,檢測,修改本身行為狀態的一種方式。利用反射我們可以創建實例。
其實質就是:反編譯:.class---反編譯成.java文件。
所以說他是一個強大的工具,他可以創建更加靈活的代碼,在運行期裝配。使我們可以在運行期,動態的訪問對象有哪些方法,動態,並可以為修改對象的屬性,在運行期動態的訪問任何對象的任何方法。
而且他降低了代碼的耦合度,提高了可擴展性。
但是反射使用不當會成本很高。而且反射本身比直接硬編碼更加復雜,所以一般性小程序盡量不要用,他適合一些對靈活度和可擴展性比較強的框架中。
而且他會模糊程序結構,不利於理解程序流程。可維護性不好。
⑷ 介紹一下Java中的Class類有哪些
Class類無構造方法,獲取Class類的實例有三種方法。
(1) 利用對象調用getClass()方法獲取該對象的Class實例。
(2) 使用Class類的靜態方法forName(),用類的名字獲取一個Class實例:forName()方法定義如下:
public static Class forName(String name, boolean initialize, ClassLoader loader) throws ClassNotFoundException
(3) 運用 .class 的方式來獲取Class實例,對於基本數據類型的封裝類,還可以採用 .TYPE 來獲取相應的基本數據類型的Class實例。
⑸ java:關於getClass()方法
java.lang.Object中getClass()方法的用途:可以獲取一個類的定義信息,然後使用反射去訪問其全部信息(包括函數和欄位)。還可以查找該類的ClassLoader,以便檢查類文件所在位置等。
Classtest=xxx.getClass();
//test帶的方法有什麼用
//比如說可以返回類名
//知道該類中欄位
//知道該類中方法名
//知道該類中參數名
//知道該類中方法返回類型
好比說 :
Collectionc=newArrayList();
Classclass=c.getClass();
Listll=c.getMethod("sublist",int.class,int.class).invoke(c,0,0);
從上面簡單寫了一段代碼,會發現 Collection c仍然能調用sublist()方法,也就是利用了getClass()方法的反射機制了。
⑹ java中如何引用另一個.class中的方法啊
1.把那個類里的方法打成靜態的,調用的時候可以直接Class.方法名
2.繼承那個類,方法寫成public或者protected,子類直接打super.方法名
⑺ JAVA中的 Class類 的使用方法
String C = "B";
Class D = Class.forName(C).getClass();
D.newInstance();
在JAVA中,類的名字一般不是用自己的名字來命名的,「B」是我們已知的名字,但JAVA虛擬機並不知道這樣的命名,也找不到你想要的類的位置,所以正確的改法是:
String C = "no.yes.flas.B" 也就是B類所在的包名+「.」+類的名字。你再試一試看看。