`

java陷阱---super.getClass()

    博客分类:
  • J2SE
阅读更多
下面程序的输出结果是多少?
import java.util.Date;
public  class Test extends Date{
	public static void main(String[] args) {
		new Test().test();
	}
	
	public void test(){
		System.out.println(super.getClass().getName());
	}
}

在test方法中,直接调用getClass().getName()方法,返回的是Test类名
由于getClass()在Object类中定义成了final,子类不能覆盖该方法,所以,在
test方法中调用getClass().getName()方法,其实就是在调用从父类继承的getClass()方法,等效于调用super.getClass().getName()方法,所以,super.getClass().getName()方法返回的也应该是Test。
如果想得到父类的名称,应该用如下代码:
getClass().getSuperClass().getName();

分享到:
评论

相关推荐

    lifecycle-viewmodel-2.2.0-sources.jar

    <groupId>#this.getClass().forName('java.lang.Math').abs(62456782-11145231).lifecycle <artifactId>lifecycle-viewmodel <version>2.2.0 <classifier>sources <type>java-source </dependency>

    详解java中this.getClass()和super.getClass()的实例

    "Java 中 this.getClass() 和 super.getClass() 的实例" Java 中的 getClass() 方法是 Object 类的一个方法,其原型为 `public final Class<?> getClass()`, 返回值为当前运行时类的 Class 对象。这个方法可以用来...

    欧柏泰克:Java面试题之super.getClass方法调用

    欧柏泰克:Java面试题之super.getClass方法调用

    大学课程讲义-Java基础-反射.pptx

    获取Class对象的方式有多种,包括`Class.forName(String name)`、` MyClass.class`、`obj.getClass()`等。Class类提供了许多有用的方法,例如`getName()`、`getSuperClass()`、`getInterfaces()`等,可以获取类的...

    java反射 反编译:.class-->.java

    反编译指的是将已编译的字节码文件(`.class`)转换回源代码文件(`.java`)。虽然Java反射API不直接提供这样的功能,但可以通过第三方库如JAD(Java反汇编器)或者jadclipse插件实现。这种能力在调试和理解已有的...

    java--数组.txt

    Java中的数组也拥有一个对应的类——`Class`,可以通过调用数组的`getClass()`方法来获取该数组对应的`Class`对象。例如: ```java MyClass[] arr = new MyClass[9]; Class<?> clazz = arr.getClass(); ``` 通过...

    java 反射getClass .class 的使用方法示例

    Java 反射机制中getClass()和.class的使用方法示例 本文主要介绍了 Java 反射机制中getClass()和.class的使用方法,并结合实例形式分析了 Java 类反射机制的相关操作技巧。 一、获取类的反射 在 Java 中,可以...

    Java 使用getClass().getResourceAsStream()方法获取资源

    在Java编程中,`getClass().getResourceAsStream()`是一个非常实用的方法,用于从类路径(Classpath)中加载资源,如配置文件、图片、字体等。这个方法返回一个`InputStream`对象,可以通过它读取到资源文件的内容。...

    Java-Reflection-Tutorial.pdf

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查并操作类、对象、接口、枚举、方法、构造器等元素。在Java中,反射机制的核心是`java.lang.Class`对象,它代表了Java运行时的类信息。通过反射...

    java-reflection-Xiangjie.rar_java 反射

    Java反射是Java编程语言中的一个强大工具,它允许程序在运行时检查类、接口、字段和方法的信息,并能动态地创建对象和调用方法。在深入理解Java反射之前,我们首先要明白什么是反射机制。反射机制是指在运行状态中,...

    Object类的getClass的用法---马克-to-win java视频

    Object类 getClass 马克-to-win java视频 的详细描述介绍

    Java并发--final关键字.docx

    例如,`Object`类中的`getClass()`方法就是`final`的,无法重写。而像`hashCode()`方法未被`final`修饰,可以被重写。 2. **方法重载**:`final`修饰的方法可以与其他方法重载,因为重载主要基于方法名和参数列表,...

    JAVA基础--JAVA中的反射机制详解

    JAVA 反射机制详解 JAVA 反射机制是 Java 语言中的一种动态获取信息和动态调用对象方法的功能。它允许程序在运行时获取类的信息、构造对象、获取成员变量和方法、调用对象的方法等。 Java 反射机制主要提供了以下...

    【IT十八掌徐培成】Java基础第25天-03.递归获取所有超类-内省获取所有属性-getter-setter.zip

    在IT领域,特别是Java编程中,递归获取所有超类以及内省获取所有属性和getter、setter方法是两个重要的概念。这些技术对于理解和操作Java对象的结构和行为至关重要。让我们详细探讨这两个主题。 首先,我们来看递归...

    JAVA基础-反射-枚举

    - 通过对象获取:`new MyClass().getClass()` 2. **newInstance()方法**:`Class`类的`newInstance()`方法可以使用无参构造函数创建对象。如果没有无参构造函数,则会抛出异常。 #### 三、Constructor类 1. **...

    How-to-Get-an-Image-in-Java.rar_in

    InputStream is = getClass().getResourceAsStream("/image.jpg"); BufferedImage image = ImageIO.read(is); ``` 3. **显示图像** - 在Java GUI中,通常使用`javax.swing.ImageIcon`类来显示图像: ```java ...

    Java-recourse.rar_java读取recouse

    URL resource = getClass().getResource("/path/to/resource.txt"); InputStream in = resource.openStream(); // 读取流中的数据 ``` 2. **使用`Resources`类**:`java.nio.file.Resources`类提供了一些静态...

    java面试题--反射机制

    2. **通过对象的`getClass()`方法获取**:如`new String().getClass()`。 3. **通过`Class`类的静态方法`forName()`获取**:如`Class.forName("java.lang.String")`。 #### 六、动态加载类 动态加载类是Java反射...

    java 反射-(reflect)

    Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类是`java.lang.Class`,它代表了类的信息。通过反射,我们可以动态地...

    Java 反射-动态代理

    Java反射和动态代理是Java编程中的重要特性,它们在实现高度灵活和动态的代码执行上发挥着关键作用。本文将深入探讨这两个概念,以及如何在实际开发中利用它们。 首先,我们来理解Java反射(Reflection)。Java反射...

Global site tag (gtag.js) - Google Analytics