java,class
<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>
java class是什麼,讓我們一起了解一下?
CLASS是在網絡工程中的一種協議,在java中有兩種對象:實例對象和Class對象。每個類運行時的類型信息就是用Class對象表示的,它包含了與類有關的信息,其實實例對象就是通過Class對象來創建的。
那我們如何獲得Class對象?
1、Class.forName(“類的全限定名”)
2、實例對象.getClass()
3、類名.class (類字面常量)
實戰操作:如何獲得一個實例的類型類?
Object類中包含一個方法名叫getClass,利用這個方法就可以獲得一個實例的類型類。類型類指的是代表一個類型的類,因爲一切皆是對象,類型也不例外,在Java使用類型類來表示一個類型,所有的類型類都是Class類的實例。getClass()會看到返回Class<?>。
JDK中,普通的Class.newInstance()方法的定義返回Object,要將該返回類型強制轉換爲另一種類型,但是使用泛型的Class<T>,Class.newInstance()方法具有一個特定的返回類型。
代碼如下:
public class Main2 { public static void main(String[] args) throws InstantiationException, IllegalAccessException { System.out.println("1-----------"); Dog dog1 = creatNew1(Dog.class); System.out.println(dog1.name + " is " + dog1.type+ ""); System.out.println("2-----------"); Animal ani1 = creatNew2(Cat.class); Cat cat1 = (Cat) ani1; System.out.println(cat1.name + " is " + cat1.type + ""); System.out.println("3-----------"); Object obj = creatNew3(Dog.class); Dog dog2 = (Dog) obj; System.out.println(dog1.name + " is " + dog2.type + ""); System.out.println("4-----------"); Object obj2 = creatNew4(Cat.class); Cat cat2 = (Cat) obj2; System.out.println(cat2.name + " is " + cat2.type + ""); System.out.println("5-----------"); Object obj3 = creatNew5(new Cat()); Cat cat3 = (Cat) obj3; System.out.println(cat3.name + " is " + cat3.type + ""); } /** * 此方法是一個非泛型類中的泛型方法,參數爲Class<T>類型,可以傳入任何類,但是Class<T>將參數在函數內部的類型固定爲 T類,使用clazz.newInstance(),返回的類型也爲固定的 T 類型。 * 如: 傳入Dog.class, 函數中的 T 固定爲Dog.class,函數返回的是Dog類型,不需要強制轉換爲Dog類型 * (當然,函數返回類型也可以是Object類型,但是沒必要) */ public static <T> T creatNew1(Class<T> clazz) throws IllegalAccessException, InstantiationException { System.out.println(clazz);//打印具體傳入的類型。 return clazz.newInstance(); } /** * 此方法參數是Class<? extends Animal>,只能傳入Animal及其子類的類型,函數返回類型只能聲明爲Animal或Object類型, * 如:傳入Cat.class,函數返回一個Animal的子類對象,需將此子類對象強制轉換爲具體的子類(即Cat類)。 */ public static Animal creatNew2(Class<? extends Animal> clazz) throws IllegalAccessException, InstantiationException { System.out.println(clazz);//打印具體傳入的類型。 return clazz.newInstance(); } /** * 此方法參數是Class,可傳入任何類,其返回只能聲明爲Object類對象。 * 如:傳入Dog.class, 返回的是Object類型的對象,需強制轉換爲Dog類型的對象。 */ public static Object creatNew3(Class clazz) throws IllegalAccessException, InstantiationException { System.out.println(clazz);//打印具體傳入的類型。 return clazz.newInstance(); } /** * 傳入參數Class<?> 和 上一個方法傳入 Class 的區別還不是很清楚,其返回只能聲明爲Object類對象。 * 如:Cat.class, 返回的是Object類型的對象,需強制轉換爲Cat類型的對象。 */ public static Object creatNew4(Class<?> clazz) throws IllegalAccessException, InstantiationException { System.out.println(clazz);//打印具體傳入的類型。 return clazz.newInstance(); } /** * 傳入Object類型的對象,返回也聲明爲Object類型。 */ public static Object creatNew5(Object object) { System.out.println(object.getClass());//打印具體傳入的類型。 return object; }}abstract class Animal { public String type = "type = animal ";}class Dog extends Animal { public String name = "name = gou";}class Cat extends Animal { public String name = "name = mao";}/** * 這些方法,傳的參數聲明不同,其返回的聲明也必然要隨之不同。 */
-
公交車多功能支付終端刷卡機怎樣才能刷多種,掃碼支付公交費一卡通多功能刷卡機
1、乘客乘車刷卡時,將手機支付費用二維碼靠近刷卡設備(車載刷卡收費機,下文簡稱車載機)的掃描區,車載機對二維碼進行識別後,識別通過後進行扣費,上述操作完成,車載機完成了對乘客的收費,乘客可以搭乘汽車。2、乘客刷卡乘車後,車載機主機完成相應的扣款並存儲相應的消費...
-
qq怎麼恢復被退出的羣
21世紀是互聯網信息時代,互聯網聊天軟件發揮重要信息溝通作用,一些我們不需要的聊天羣會選擇退出,也會由於不小心或者別的原因退出了qq羣,那麼退出的聊天羣該怎麼恢復呢?退出的qq羣只有羣主能進行恢復操作,管理員不能恢復,而且只能恢復被羣主或管理員刪除的羣成員。而...
-
關於底噪的意思介紹
1、底噪亦稱背景噪聲,基本所有的好耳機都有底噪,耳機底噪一般都是因爲前端的問題,耳機的靈敏度越高對於底噪就越敏感,一些高靈敏度和低阻抗的耳機會把底噪放大,如果加大音量的情況下,底噪會更加的明顯。2、檢測MP3底噪,一般方法是在夜晚等比較安靜的環境中戴上耳機,播...
-
改圖片格式方法,如何更改圖片格式
1、找到想要更改格式的圖片。2、找到後,對着圖片右擊,找到“編輯”。3、打開“編輯”,找到左上角的“文件(F)”。4、點擊“文件”,再找到“另存爲(A)...”。5、點擊“另存爲(A)...”,找到“保存類型(T)”,右邊有一個箭頭。6、點擊箭頭,就會展出許多種圖片格式。7、選擇自己想...