『壹』 java 怎麼得到一個對象的class
java.util.Date date=new java.util.Date();
Class clazz=date.getClass();
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
『貳』 JAVA 獲取class對象 類名.class Class.forName()兩種方法什麼情況下使用 為什麼
.class 是獲得當前對象的句柄。 class.forName()用於反射,java虛擬機通過class.forName(class 名) 尋找到 名字為class 的 類文件裝載進 虛擬機。 object ob=clsss.forName("class 名").instences(); 相當於實例化一個對象
『叄』 java怎麼通過class獲得一個對象
在class裡面直接定義一個對象。
先定義一個類 ,可以用類來NEW 一個對象比如 public class A { private a; public b; }接著就可以創建一個對象 語法為 類名 對象名 = new 類名()則為 A b =new A();
『肆』 獲得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 怎麼獲取t的class
1. public Type getGenericSuperclass()
用來返回表示當前Class 所表示的實體(類、介面、基本類型或 void)的直接超類的Type。如果這個直接超類是參數化類型的,則返回的Type對象必須明確反映在源代碼中聲明時使用的類型。比如:
import java.lang.reflect.ParameterizedType;
public class GT1 extends GT2<Integer>{
public static void main(String[] args) {
System.out.println(((ParameterizedType)new GT1().getClass().getGenericSuperclass()));
}
}
則輸出結果即為:
GT2<java.lang.Integer>
如果此Class代表的是Object 類、介面、基本類型或 void,則返回 null。。如果此對象表示一個數組類,則返回表示 Object 類的 Class 對象。
2. public Type[] getGenericInterfaces()
與上面那個方法類似,只不過Java的類可以實現多個介面,所以返回的Type必須用數組來存儲。
以上兩個方法返回的都是Type對象或數組,在我們的這個話題中,Class都是代表的參數化類型,因此可以將Type對象Cast成ParameterizedType對象。而 ParameterizedType對象有一個方法, getActualTypeArguments()。
public Type[] getActualTypeArguments()
用來返回一個Type對象數組,這個數組代表著這個Type聲明中實際使用的類型。接著使用上面的例子:
import java.lang.reflect.ParameterizedType;
public class GT1 extends GT2<Integer>{
public static void main(String[] args) {
System.out.println(((ParameterizedType)new GT1().getClass().getGenericSuperclass()).getActualTypeArguments()[0]);
}
}
『陸』 java怎麼通過class獲得一個對象
所有的java類都繼承自object,那數組也不例外。就是說一個數組本身就是一個class,你得到這個數組的class對象後,可以把它轉型為數組。
『柒』 Java面試題:獲得一個類的類對象有哪些方式
給你介紹3種獲得類對象方式:
第一種方式:通過類本身來獲得對象
Classclassname=this.getClass();
第二種方式:通過子類的實例獲取父類對象
ClassNamecn=newClassName();
UserClass=cn.getClass();
ClassSubUserClass=UserClass.getSuperclass();
第三種方式:通過類名加.class獲取對象
ClassForClass=**.**.ClassName.class;(類在包中的路徑加.class)
第四種方式:通過類名的字元串獲取對象
ClassForName=Class.forName("**.**.ClassName");
這種方式在jdbc中常用到。
『捌』 JAVA 獲取class對象 類名.class Class.forName()兩種方法什麼情況下使用 為什麼
Class.forName()是根據類名稱載入類 比如有一個類名為com.abc.AAA 此處Class.forName(『com.abc.AAA 』).newInstance()就會創建一個AAA對象而.class一般用來獲取類的通用屬性 比如AAA.class.getDeclareMethod()是獲取AAA類的所有聲明的方法 主要用於反射機制