首頁 Java java教程 java中class什麼意思?

java中class什麼意思?

May 17, 2019 pm 03:52 PM
class java

class的意思為“類”,是java中的一個類,是定義一個特定類的實現,存在於java.lang包中,它的構造函數是私有的,由JVM(類加載器)建立Class對象,可以透過getClass()方法取得到Class對象。

java中class什麼意思?

class是一個類,存在於java.lang套件中,它的建構子是私有的,由JVM(類別載入器)建立Class對象,我們可以透過getClass()方法取得到Class物件。

    /*
     * 私有构造函数,使得只有jvm可以创建该类的对象,这个私有构造函数还可以防止通过默认构造函数创建类对象
     */
    private Class(ClassLoader loader) {
        // 初始化final变量ClassLoader
        classLoader = loader;
    }
登入後複製

Class 類別是在Java語言中定義一個特定類別的實作。一個類別的定義包含成員變量,成員方法,還有這個類別實現的接口,以及這個類別的父類別。 Class類別的物件用於表示目前執行的 Java 應用程式中的類別和介面。例如:每個陣列均屬於一個 Class 類別對象,所有具有相同元素類型和維度的陣列共用一個Class 物件。基本的 Java 類型(boolean, byte, char, short,int, long, float 和 double) 和 void 類型也可表示為 Class 物件。

Class對象,透過它我們可以拿到創建的類別的屬性,方法等。

java中class什麼意思?

Class類別的作用

(1)取得類別中屬性的類型

(2)獲取類別中屬性的名稱

(3)取得類別的方法

(4)取得類別的基底類別等等

(5)綜合上述可以利用它完成反射

Class的主要方法

1.forName方法

輸入需要載入的類別的全路徑名,得到類別的Class物件

2.newInstance方法

  public T newInstance()
        throws InstantiationException, IllegalAccessException
    {
        if (System.getSecurityManager() != null) {
            checkMemberAccess(Member.PUBLIC, Reflection.getCallerClass(), false);
        }
        // NOTE: 下面的编码可能不是严格符合当前的java内存模型
        // 寻找构造器
        if (cachedConstructor == null) {
            if (this == Class.class) {
                throw new IllegalAccessException(
                    "Can not call newInstance() on the Class for java.lang.Class"
                );
            }
            try {
                Class<?>[] empty = {};
               //获取无参构造器,如果没有就抛出异常,说明这个方法只适用于有无参构造函数的类
                final Constructor<T> c = getConstructor0(empty, Member.DECLARED);
                // 设置构造器允许访问
                java.security.AccessController.doPrivileged(
                    new java.security.PrivilegedAction<Void>() {
                        public Void run() {
                                c.setAccessible(true);
                                return null;
                            }
                        });
                cachedConstructor = c;
            } catch (NoSuchMethodException e) {
                throw (InstantiationException)
                    new InstantiationException(getName()).initCause(e);
            }
        }
        Constructor<T> tmpConstructor = cachedConstructor;
        // 安全检查
        int modifiers = tmpConstructor.getModifiers();
        if (!Reflection.quickCheckMemberAccess(this, modifiers)) {
            Class<?> caller = Reflection.getCallerClass();
            if (newInstanceCallerCache != caller) {
                Reflection.ensureMemberAccess(caller, this, null, modifiers);
                newInstanceCallerCache = caller;
            }
        }
        // 执行无参构造函数创建实例对象
        try {
            return tmpConstructor.newInstance((Object[])null);
        } catch (InvocationTargetException e) {
            Unsafe.getUnsafe().throwException(e.getTargetException());
            // Not reached
            return null;
        }
    }
登入後複製

3.isInstance(native方法)

用於判斷入參是否為目前Class物件(子類別)的實作類別

public class TestInfo {

    static {
        System.out.println("我是谁");
    }

    public TestInfo(){
        System.out.println("我是构造函数");
    }
    public String test="测试属性";
    public static void main(String[] args) {
        TestClass info=new TestClass();
        //返回结果是true因为info是子类的对象System.out.println(TestInfo.class.isInstance(info));
    }
    public static class TestClass extends TestInfo{

    }}
登入後複製

4.getName、getTypeName、getCanonicalName、getSimpleName

    public static void main(String[] args) {
        System.out.println(TestClass.class.getTypeName());
        System.out.println(TestClass.class.getCanonicalName());
        System.out.println(TestClass.class.getSimpleName());
        System.out.println(TestClass.class.getName());
        System.out.println("-------------------------------------------------------");
        System.out.println(TestClass[].class.getTypeName());
        System.out.println(TestClass[].class.getCanonicalName());
        System.out.println(TestClass[].class.getSimpleName());
        System.out.println(TestClass[].class.getName());
    }

    public static abstract class TestClass<T extends TestInfo, String> extends TestInfo implements Aware, Comparable<Integer> {
        public abstract void test();
    }
登入後複製

輸出結果

com.hikvision.test.abc.TestInfo$TestClass
com.hikvision.test.abc.TestInfo.TestClass
TestClass
com.hikvision.test.abc.TestInfo$TestClass
-------------------------------------------------------
com.hikvision.test.abc.TestInfo$TestClass[]
com.hikvision.test.abc.TestInfo.TestClass[]
TestClass[]
[Lcom.hikvision.test.abc.TestInfo$TestClass;
登入後複製

5.getClassLoader

##取得目前類別的類別載入器

#6.getTypeParameters

取得泛型類別中的泛型參數陣列。

7.getSuperclass和getGenericSuperclass

都是獲取父類別信息,但是後者會帶上泛型參數

8.getInterfaces和getGenericInterfaces

取得目前Class物件實作的介面數組,但後者會帶介面的泛型參數,如

  public static void main(String[] args) {
        System.out.println(TestClass.class.getInterfaces()[1]);
    }

    public static abstract class TestClass<T extends TestInfo,String> extends TestInfo implements Aware,BeanFactory {
        public abstract void test();
    }
登入後複製

輸出結果

interface org.springframework.beans.factory.BeanFactory
java.lang.Comparable<java.lang.Integer>
登入後複製

9.isAssignableFrom(native方法)

這個方法比較反人類,括號裡的入參表示的是當前Class物件的父類別或是同一個物件時才成立。

//这样返回的是false
System.out.println(TestClass.class.isAssignableFrom(TestInfo.class));
登入後複製
10.isInterface(native方法)

判斷是否為介面

11.isArray(native方法)

是否為陣列

12.isPrimitive(native方法)

用來判斷這個Class物件是否為基本型,如int,byte,char等

13.isAnnotation

#判斷這個Class物件是否為註解

14.getComponentType

如果目前Class物件是數組,取得數組中的元素類型

15.getModifiers

取得屬性或方法前面的修飾詞對應的枚舉值

16.getDeclaringClass

取得方法或屬性的歸屬類,或取得目前Class物件繼承於哪個類別

#17 .getSimpleName

Class物件的類別名稱

18.getClasses、getDeclaredClasses

(1)取得Class物件中public修飾的內部類別

(2 )取得Class物件中的內部類,繼承成員是不包含在內的

19.getFields、getField、getDeclaredFields

(1)取得public修飾的屬性域

(2)根據輸入的屬性名稱尋找對應的屬性域

(3)取得Class物件中的屬性域

20.getMethods、getMethod、getDeclaredMethods

#( 1)取得public修飾的方法

(2)根據輸入的方法名稱和入參類型,找出對應的方法

(3)取得Class物件中的方法

21.getConstructors、getConstructor、getDeclaredConstructors

(1)取得public修飾的建構子

(2)根據輸入的方法名稱和入參類型,找出對應的建構子

(3)取得Class物件中的建構子

以上是java中class什麼意思?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java 中的完美數 Java 中的完美數 Aug 30, 2024 pm 04:28 PM

Java 完美數指南。這裡我們討論定義,如何在 Java 中檢查完美數?

Java 中的隨機數產生器 Java 中的隨機數產生器 Aug 30, 2024 pm 04:27 PM

Java 隨機數產生器指南。在這裡,我們透過範例討論 Java 中的函數,並透過範例討論兩個不同的生成器。

Java中的Weka Java中的Weka Aug 30, 2024 pm 04:28 PM

Java 版 Weka 指南。這裡我們透過範例討論簡介、如何使用 weka java、平台類型和優點。

Java 中的史密斯數 Java 中的史密斯數 Aug 30, 2024 pm 04:28 PM

Java 史密斯數指南。這裡我們討論定義,如何在Java中檢查史密斯號?帶有程式碼實現的範例。

Java Spring 面試題 Java Spring 面試題 Aug 30, 2024 pm 04:29 PM

在本文中,我們保留了最常被問到的 Java Spring 面試問題及其詳細答案。這樣你就可以順利通過面試。

突破或從Java 8流返回? 突破或從Java 8流返回? Feb 07, 2025 pm 12:09 PM

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

Java 中的時間戳至今 Java 中的時間戳至今 Aug 30, 2024 pm 04:28 PM

Java 中的時間戳記到日期指南。這裡我們也結合範例討論了介紹以及如何在java中將時間戳記轉換為日期。

Java程序查找膠囊的體積 Java程序查找膠囊的體積 Feb 07, 2025 am 11:37 AM

膠囊是一種三維幾何圖形,由一個圓柱體和兩端各一個半球體組成。膠囊的體積可以通過將圓柱體的體積和兩端半球體的體積相加來計算。本教程將討論如何使用不同的方法在Java中計算給定膠囊的體積。 膠囊體積公式 膠囊體積的公式如下: 膠囊體積 = 圓柱體體積 兩個半球體體積 其中, r: 半球體的半徑。 h: 圓柱體的高度(不包括半球體)。 例子 1 輸入 半徑 = 5 單位 高度 = 10 單位 輸出 體積 = 1570.8 立方單位 解釋 使用公式計算體積: 體積 = π × r2 × h (4

See all articles