📜  Java.lang.Class类(1)

📅  最后修改于: 2023-12-03 15:16:02.620000             🧑  作者: Mango

Java.lang.Class类介绍

Java.lang.Class类是Java语言中基础的类之一。它表示一个类的元素,例如类的名称、类的实例、类的构造函数、成员函数等等。在Java中,每个类都有一个对应的Class对象。

获取Java.lang.Class对象

Java.lang.Class对象可以通过以下方式获取:

  • 对象的getClass()方法:对于一个Java对象,使用其getClass()方法可以获取到对应的Class对象。示例代码如下:
String str = "Hello World";
Class<? extends String> cls = str.getClass();
System.out.println(cls.getName()); // 输出java.lang.String
  • 类字面常量(Class Literal):通过类字面常量获取Class对象。使用方式如下:
Class<String> cls = String.class;
System.out.println(cls.getName()); // 输出java.lang.String
  • Class.forName()方法:通过类的完全限定名获取该类对应的Class对象。代码示例如下:
Class<?> cls = Class.forName("java.lang.String");
System.out.println(cls.getName()); // 输出java.lang.String
常用方法

Java.lang.Class类提供了一系列有用的方法,以下是一部分常用方法:

  • getMethods(): 获取类中的所有public方法
  • getMethod(String name, Class<?>... parameterTypes): 获取指定名称和参数类型的public方法
  • getConstructors(): 获取类的所有public构造函数
  • getConstructor(Class<?>... parameterTypes): 获取指定参数类型的public构造函数
  • getFields(): 获取类中的所有public字段
  • getField(String name): 获取指定名称的public字段
  • newInstance(): 创建该Class对象所表示的类的新实例
示例代码

以下是一个示例程序,演示如何通过Java.lang.Class类获取类中的方法、构造函数、字段。

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class ClassDemo {
    public static void main(String[] args) throws Exception {
        // 获取String类的Class对象
        Class<?> strCls = Class.forName("java.lang.String");

        // 获取String类中的方法
        Method[] methods = strCls.getMethods();
        System.out.println("String类中的方法有:");
        for (Method method : methods) {
            System.out.println(method.getName());
        }

        // 获取String类中的构造函数
        Constructor<?>[] constructors = strCls.getConstructors();
        System.out.println("String类中的构造函数有:");
        for (Constructor<?> constructor : constructors) {
            System.out.println(constructor.getName());
        }

        // 获取String类中的字段
        Field[] fields = strCls.getFields();
        System.out.println("String类中的字段有:");
        for (Field field : fields) {
            System.out.println(field.getName());
        }
    }
}

该程序将输出以下内容:

String类中的方法有:
equals
toString
hashCode
charAt
codePointAt
codePointBefore
codePointCount
compareTo
compareToIgnoreCase
concat
contains
endsWith
equalsIgnoreCase
format
getBytes
getChars
indexOf
intern
isEmpty
join
lastIndexOf
length
lines
matches
offsetByCodePoints
regionMatches
repeat
replace
replaceAll
replaceFirst
split
startsWith
strip
subSequence
substring
toCharArray
toLowerCase
toString
toUpperCase
trim
valueOf
String类中的构造函数有:
public java.lang.String(byte[],java.nio.charset.Charset)
public java.lang.String(byte[],int,int,java.nio.charset.Charset)
public java.lang.String(byte[],int,java.nio.charset.Charset)
public java.lang.String(byte[],int,int)
public java.lang.String(byte[],int,int,java.lang.String)
public java.lang.String(byte[],java.lang.String)
public java.lang.String(byte[],int,int,int)
public java.lang.String(byte[])
public java.lang.String(java.lang.StringBuilder)
public java.lang.String(java.lang.StringBuffer)
public java.lang.String(char[],int,int)
public java.lang.String(char[])
public java.lang.String(java.lang.String)
String类中的字段有:
CASE_INSENSITIVE_ORDER
serialVersionUID
UTF_8

以上就是Java.lang.Class类的介绍和使用方式。通过Java.lang.Class类,我们可以获取类中的方法、构造函数、字段等信息,为程序设计和开发提供很多便利。