浅谈java中类名.class, class.forName(), getClass()的区别

yizhihongxing
  1. 类名.class
    类名.class属于Java的Class字面量,它表示对应类的类类型(Class对象)。使用该字面量可以获取类的Class对象,进而通过反射获取类的信息。以下为示例代码:
public class Person {
    private String name;

    public void sayHello() {
        System.out.println("Hello, my name is " + name);
    }
}

public class Test {
    public static void main(String[] args) {
        Class<Person> personClass = Person.class;
        System.out.println(personClass.getName()); //输出:Person
    }
}
  1. Class.forName()
    Class.forName()方法是Java中常用的获取类类型的方法之一。该方法的参数是一个字符串类型的类名,当虚拟机中没有该类类型时,会尝试加载该类。以下为示例代码:
public class Test {
    public static void main(String[] args) throws Exception {
        Class<?> personClass = Class.forName("Person");
        System.out.println(personClass.getName()); //输出:Person
    }
}

需要注意的是,Class.forName()方法不仅可以加载类,还可以执行类加载器中的静态代码块,因此使用该方法时一定要注意类加载的顺序。

  1. getClass()
    getClass()方法属于Object类中的方法,它可以返回某个实例对象所属的类的Class对象。以下为示例代码:
public class Person {
    private String name;

    public void sayHello() {
        System.out.println("Hello, my name is " + name);
    }
}

public class Test {
    public static void main(String[] args) {
        Person person = new Person();
        Class<? extends Person> personClass = person.getClass();
        System.out.println(personClass.getName()); //输出:Person
    }
}

需要注意的是,getClass()方法只能获取到运行时对象的类类型。如果运行时类型与声明类型不一致,该方法返回的是运行时类型。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈java中类名.class, class.forName(), getClass()的区别 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • gridview checkbox从服务器端和客户端两个方面实现全选和反选

    实现 GridView 的全选和反选功能分为服务器端和客户端两个方面。 一、服务器端实现 服务器端实现相对简单,只需要在 GridView 控件上加上一个 CheckBox 控件,然后在 CheckedChanged 事件中修改 GridView 的每一个数据行的 CheckBox 控件状态即可。代码如下: <asp:GridView ID=&quot…

    other 2023年6月27日
    00
  • Iptables防火墙四表五链概念及使用技巧详解

    Iptables防火墙四表五链概念及使用技巧详解 简介 在Linux系统中,Iptables是一种被广泛使用的防火墙程序,在网络安全中发挥着非常重要的作用。本文将对Iptables防火墙的四表五链概念以及使用技巧进行详细的讲解。 四表 Iptables防火墙中的四个表分别是:filter表、nat表、mangle表和raw表。 filter表 filter表…

    other 2023年6月27日
    00
  • 如何查看solaris系统的版本和位数?

    要查看Solaris系统的版本和位数,可以按照以下步骤进行操作: 打开终端:在Solaris系统中,可以使用终端来执行命令。 运行命令:在终端中输入以下命令来查看系统的版本和位数: shell uname -a 这个命令会显示系统的详细信息,包括版本和位数。 示例输出: SunOS solaris 5.11 11.4.0.15.0 sun4v sparc s…

    other 2023年8月3日
    00
  • C语言 函数缺省参数详情

    C语言 函数缺省参数详情攻略 在C语言中,函数缺省参数(Default Arguments)是指在函数定义时为参数提供默认值,使得在调用函数时可以不传递该参数,而使用默认值。这在某些情况下可以简化函数调用,提高代码的可读性和灵活性。 函数定义中的缺省参数 在C语言中,函数定义时可以为参数提供默认值。具体的语法格式如下: return_type functio…

    other 2023年7月29日
    00
  • Golang判断两个链表是否相交的方法详解

    Golang判断两个链表是否相交的方法详解 在判断两个链表是否相交的时候,可以使用双指针的方法实现。 双指针方法 首先需要定义两个指针,分别指向两个链表的头结点,然后同时遍历两个链表,直到到达它们的尾部。如果两个链表相交,那么它们在相交点之后的结点都是相同的,因此在遍历结束前,两个指针必定会指向同一个结点。 请参考下面的代码示例: type ListNode…

    other 2023年6月27日
    00
  • PowerBuilder学习笔记之3应用对象

    PowerBuilder学习笔记之3应用对象 在PowerBuilder中,应用对象(Application Object)可以看作是整个应用程序的根对象,它对应的类别是Application。在应用对象中,我们可以定义全局变量、处理应用程序的各种事件、设置系统级别的属性等等。 应用对象的创建和销毁 当我们创建一个PowerBuilder应用程序时,系统会自…

    其他 2023年3月28日
    00
  • 用ps给文字字体加粗的多种方法技巧

    当然,我可以为您提供“用ps给文字字体加粗的多种方法技巧”的完整攻略,过程中包含两条示例说明。攻略如下: 用ps给文字字体加粗的多种方法技巧 在使用ps命令输出进程信息时,有时需要将某些文字字体加粗以突出显示。在本教程中,我们将介绍多种方法来实现这一目的。 方法1:使用ANSI转义序列 ANSI转义序列是一种特殊的字符序列,可以控制终端的输出。您可以使用AN…

    other 2023年5月9日
    00
  • 获取Activity栈,判断当前Activity位置的方法

    获取Activity栈和判断当前Activity位置的方法可以通过Android的ActivityManager和ActivityTaskManager来实现。下面是详细的攻略: 1. 使用ActivityManager获取Activity栈 可以通过ActivityManager的方法来获取当前应用程序的Activity栈。 import android.…

    other 2023年6月28日
    00
合作推广
合作推广
分享本页
返回顶部