class は「クラス」を意味します。これは Java のクラスです。特定のクラスの実装を定義します。java.lang パッケージに存在します。そのコンストラクターはプライベートであり、JVM (クラス ローダー) によってロードされます。 ).device) を使用して Class オブジェクトを作成します。このオブジェクトは getClass() メソッドを通じて取得できます。
class は java.lang パッケージに存在するクラスです。そのコンストラクターはプライベートであり、Class オブジェクトは JVM (クラス ローダー) によって作成されます。 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 の役割
(1) クラス内の属性の型を取得する
(2) クラスの属性の名前を取得します。
#(3) クラスのメソッドを取得します。#(4) クラスの基底クラスを取得します。
(5) 上記を踏まえて、リフレクションを完了します。
ClassのMainメソッド1.forNameメソッド
Enterロードしてクラスの 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 (ネイティブ メソッド)
入力パラメータが現在の 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
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(ネイティブ メソッド)
## などのインターフェイスの汎用パラメーターをもたらします。 #This method is more anti-human. 括弧内の入力パラメータは、現在の Class オブジェクトまたは同じオブジェクトの親クラスを表します。
//这样返回的是false System.out.println(TestClass.class.isAssignableFrom(TestInfo.class));
10.isInterface(ネイティブ メソッド)
インターフェイスかどうかの判断
11.isArray(ネイティブ メソッド)
配列かどうか
12.isPrimitive (ネイティブ メソッド)
この Class オブジェクトが int、byte、char などの基本型であるかどうかを判断するために使用されます。
13.isAnnotation
Class オブジェクトにアノテーションが付いているかどうかを判断します
14.getComponentType
現在の Class オブジェクトが配列の場合、配列内の要素の型を取得します
15.getModifiers
属性またはメソッドの前の修飾子に対応する列挙値を取得します
16.getDeclaringClass
メソッドまたは属性の属するクラスを取得します、または、現在の Class オブジェクトの継承元のクラスを取得します。
17 .getSimpleName
Class オブジェクトのクラス名
18.getClasses、getDeclaredClasses
(1) Class オブジェクト内の public-modified 内部クラスを取得します。
(2) Class オブジェクト内の内部クラスを取得します。継承されたメンバーは含まれません
19.getFields, getField, getDeclaredFields
(1) 公開変更属性フィールドを取得します
(2) 入力された属性名に従って、対応する属性ドメインを検索します
(3) 属性ドメインを取得しますクラス オブジェクト
20.getMethods, getMethod, getDeclaredMethods
( 1) パブリックに変更されたメソッド
を取得します (2) 対応するメソッド
に基づいて検索します入力メソッド名と入力パラメータの型について (3) Class オブジェクトのメソッド
を取得します。 21.getConstructors、getConstructor、getDeclaredConstructors
(1) パブリックに変更されたコンストラクター
# を取得します。 ##(2) 入力メソッド名と入力パラメータの型に基づいて、対応するコンストラクターを検索します(3) Class オブジェクト内のコンストラクターを取得します以上がJavaでクラスとは何を意味しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。