簡體   English   中英

java類類型 - 它們是什么意思?

[英]java class types - what do they mean?

什么是java class類型? 我很困惑它的含義以及它與聲明object類型的不同之處:

Class className;

謝謝

Class對象有多種用途。 例如,假設我想基於存儲在配置文件中的某個類名創建類的實例。

String className = config.myClass;
Class clazz = Class.forName(className);
Object myClassInstance = clazz.newInstance();

它表示對象的運行時類型 Class類型的實際編程使用通常在反射泛型中找到。

例如,在Class#forName()幫助下抽象地加載JDBC驅動程序:

String jdbcDriverClassName = getItFromSomeExternalConfigurationFile();
Class.forName(jdbcDriverClassName);

或者將通用Object類型轉換為以前的類型:

public static <T> T findAttribute(String key, Class<T> type) {
    return type.cast(attributeMap.get(key)); // It's a Map<String, Object>.
}

......可以用作

SomeType instance = findAttribute("someKey", SomeType.class);

這里可以在“通用對象轉換器”的風格中找到更加擴展的示例。

實際上,閱讀java.lang.Class javadoc,包括所有可用的方法,應該可以讓你知道它可以用於什么。

Class是一種特殊類型的Object ,即ClassObject的子類。 您定義的每個類都有自己的Class對象。 您可以將其作為MyObject.classmyInstance.getClass()來訪問。 換句話說,您定義的任何類都具有Class屬性,其中任何類都是Object 我同意這對新手來說有點混亂。

javadoc說:

類Class的實例表示正在運行的Java應用程序中的類和接口。 枚舉是一種類,注釋是一種接口。 每個數組也屬於一個類,它反映為一個Class對象,由具有相同元素類型和維數的所有數組共享。 原始Java類型(boolean,byte,char,short,int,long,float和double)和關鍵字void也表示為Class對象。

類沒有公共構造函數。 相反,類對象由Java虛擬機在加載類時自動構造,並通過調用類加載器中的defineClass方法來構造。

您可以在檢查某個變量的類型或檢查繼承運行時時使用它。 它也用於反射,動態加載類型並在它們上執行方法。

Thinking in Java

Class對象

要了解運行時類型信息(RTTI)如何在Java中工作,您必須首先了解在運行時如何表示類型信息。 這是通過一種稱為Class對象的特殊對象來實現的,該對象包含有關該類的信息。 實際上,Class對象用於創建類的所有“常規”對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM