c语言编程笔录

首页 >   > 笔记大全

笔记大全

java的预定义Class对象的方法

更新时间:2023-12-30
Java中有很多对于类的描述信息,比如所有类都继承自Object类,而Object类中则有着一些很有用的方法,但不停止于此,Java还提供了一些预定义的Class对象方法,这些方法提供了很多方便的方式来获取和操作类的信息。在本文中,我将讲解这些预定义的Class对象方法并提供相关代码示例。

1. getClass()

getClass()方法是Object类中的方法。它的作用是获取对象的运行时类的类对象。可以用以下的代码来看一下getClass()方法的使用:

Object obj = new String("hello");
Class c = obj.getClass();
System.out.println(c.getName());

执行以上代码,会输出以下结果:

java.lang.String

以上代码中,我们首先创建了一个字符串对象,并使用其getClass()方法得到该对象的类对象。接着我们调用了c的getName()方法,这返回了该类对象的名字。

2. forName()

forName()方法被用于返回表示具有给定字符串名称的类或接口的Class对象。forName()方法是用来加载类进Java虚拟机(JVM)中的,它会进行类的链接,但不会初始化类。这意味着该方法返回的类对象并不会初始化,它只是在JVM中的一个存在的类名。可以用以下的代码来看一下forName()方法的使用:

Class c = Class.forName("java.lang.String");
System.out.println(c.getName());

执行以上代码,会输出以下结果:

java.lang.String

以上代码中,我们首先使用forName()方法得到类对象并赋给c。接着我们调用了c的getName()方法,它返回了该类对象的名字。

3. getDeclaredFields()

getDeclaredFields()方法返回该类所有声明的字段(不含继承的字段),这些字段对象被封装在Field类的实例中。这个方法只包括该类的成员变量,不包括成员数据的成员类和父类的成员变量。可以用以下的代码来看一下getDeclaredFields()方法的使用:

Class c = String.class;
Field[] fields = c.getDeclaredFields();
for (Field field : fields) {
  System.out.println(field.getName());
}

执行以上代码,会输出以下结果:

value
hash

以上代码中,我们首先得到一个String类对象,然后使用它的getDeclaredFields()方法得到该类的所有字段信息,接着我们使用一个for循环遍历得到的字段,并输出它的名字。

4. getMethods()

getMethods()方法返回该Class对象所表示的类或接口的所有public方法(包括Object类的public方法),这些方法对象被封装在Method类的实例中。只有那些由getModifier()中public flag位被设置的方法会被返回。这个方法不会返回私有方法、受保护的方法或包私有方法。可以用以下的代码来看一下getMethods()方法的使用:

Class c = String.class;
Method[] methods = c.getMethods();
for (Method method : methods) {
  System.out.println(method.getName());
}

执行以上代码,会输出以下结果:

equals
getBytes
getChars
clone
hashCode
concat
charAt
isEmpty
substring
...

以上代码中,我们首先得到一个String类对象,然后使用它的getMethods()方法得到该类的所有公有方法信息,接着我们使用一个for循环遍历得到的方法,并输出它的名字。

总结以上所述,我们可以了解到Java中的预定义Class对象的方法非常有用。getClass()方法获取对象的运行时类的类对象,而forName()方法则被用于返回表示具有给定字符串名称的类或接口的Class对象。getDeclaredFields()方法返回该类所有声明的字段,而getMethods()方法则返回该Class对象所表示的类或接口的所有public方法。这些方法极大地方便了在代码中对于对象和类信息的操作和处理。