`

super.getClass().getName()与getClass().getName()调用结果

    博客分类:
  • JAVA
 
阅读更多

参考地址:http://www.cnblogs.com/o-andy-o/archive/2012/12/22/2829563.html

 

万物皆对象,Object是一切对象的父类,索然在创建类型的时候没有直接的申明,编译器会帮助做这件事件。有事我们需要重写一些方法:比如

 

	@Override
	public int hashCode() {
		// TODO Auto-generated method stub
		return super.hashCode();
	}
	
	@Override
	public boolean equals(Object obj) {
		// TODO Auto-generated method stub
		return super.equals(obj);
	}
	
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return super.toString();
	}

 而这些方法都是父类Object中的本地方法,包括提供的对象锁wait(),notify()等方法都是父类继承而来。

 

 

 

代码执行的结果相同,原因是啥呢

 

System.out.println("当前类的的类名:" + getClass().getName());
System.out.println("调用父类的类名:" + super.getClass().getName());

 getClass()是从Object继承来的,此时返回的是 Object运行时的类,不然都返回java.lang.Object

 

代码2

 

System.out.println(getClass().getSuperclass().getName());

 此时返回的是父类Class的类名java.lang.Class

 

 

代码3 一切类对象的父类都是Object

 

System.out.println(getClass().getSuperclass().getClass().getSuperclass().getName());
System.out.println(getClass().getSuperclass().getClass().getSuperclass().getClass()
.getSuperclass().getClass().getSuperclass().getClass().getSuperclass().getName());
 
输出的结果是:java.lang.Object

 

 

 

 

代码四,那Object的父类是啥呢?

 System.out.println(Object.class.getSuperclass());
输出的结果是null,应证了Object是一切对象的父类

 

参考运行代码:

 

 

public class TestClassGetName {

	
	public static void main(String args[]){
		
		TestClassGetName t = new TestClassGetName();
		t.getName();
	}
	
	
	public void getName(){
		System.out.println("当前类的的类名:" + getClass().getName());
        System.out.println("调用父类的类名:" + super.getClass().getName());
        System.out.println("获取父类的类名:" + getClass().getSuperclass().getName());
        System.out.println("获取父类的类名:" + getClass().getSuperclass().getClass().getName());
        
        System.out.println("所有类的父类都是Object:" + getClass().getSuperclass().getClass().getSuperclass().getName());
        System.out.println("所有类的父类都是Object:" + getClass().getSuperclass().getClass().getSuperclass().getClass().getSuperclass().getClass().getSuperclass().getClass().getSuperclass().getClass().getSuperclass().getName());

        System.out.println("获取object类的父类:" + Object.class.getSuperclass());
	}
	
}

 

 

分享到:
评论

相关推荐

    GPRS网络开关

    final Class conmanClass = Class.forName(conman.getClass().getName()); final Field iConnectivityManagerField = conmanClass.getDeclaredField("mService"); iConnectivityManagerField.setAccessible(true)...

    java 实现AOP

     private Logger logger = Logger.getLogger(this.getClass().getName());  public void processBusiness(){  try {  logger.info("start to processing...");  //business logic here.  System.out....

    JAVA反射机制-Class类-Class对象的获取.pdf

    System.out.println(list.getClass().getName()); // 输出:java.util.ArrayList ``` 在这个例子中,虽然我们声明的是`List<String>`,但通过`getClass`方法我们可以得知实际使用的实现类是`ArrayList`。 2. **...

    用反射的方式获取父类中的所有属性和方法

    一旦我们有了`Method`或`Field`对象,就可以在运行时动态地调用方法或设置/获取属性值: ```java Object obj = ...; // 父类实例 method.invoke(obj, parameters); // 调用方法,parameters是参数数组 field....

    JAVA反射机制与类的加载

    // 1.3 调用 Object 类中定义的 getClass()方法 Person p = new Person(); System.out.println(p.getClass().getName()); // 基本数据类型 // 2.1 使用 .class 表达式 System.out.println(int.class.getName...

    动态代理.docx

    System.out.println("args:" + args[0].getClass().getName()); System.out.println("Before invoke method..."); Object object = method.invoke(concreteClass, args); // 在这里可以添加其他逻辑 return ...

    spring统一异常与日志管理

    log.info("Error happened in class: " + target.getClass().getName()); log.info("Error happened in method: " + method.getName()); // ...更多日志记录 ``` 在记录完基本信息后,我们可以在`afterThrowing`...

    Java软件中级工程师笔试题-复杂逻辑.doc

    - `super.getClass().getName()`返回`Base`类的全名,即`test.Base`(注意这里的`test`应该是包名)。 - `this.getClass().getSuperclass().getName()`同样返回`Base`类的全名,即`test.Base`。 --- #### 八、字符...

    weblogic jms

    logger.debug(qconFactory + "[" + qcon.getClass().getName() + "]" + "[" + qsession.getClass().getName() + "]" + "[" + qsender.getClass().getName() + "]" + "[" + msg.getClass().getName() + "]");...

    Java软件中级工程师笔试题-复杂逻辑.docx

    **解析:** `super.getClass().getName()`返回的是`Base`类的全名,因为`Test`类继承自`Base`。`this.getClass().getSuperclass().getName()`同样返回`Base`类的全名。 **答案:** 输出两次 `"test.Base"`。 #### 八...

    JAVA反射代码

    - `new Reflect().getClass().getName()`通过创建一个`Reflect`类的实例,然后调用`getClass()`方法获取其`Class`对象,再调用`getName()`获取类名。 ##### 案例3:通过Class实例化其他类的对象 通过`Class`对象...

    QC-To-TestLink

    #### 二、`getClass()` 方法、`class` 属性和 `getName()` 方法的解析 **1. `getClass()` 方法** `getClass()` 是 Java 中的一个内置方法,它属于 `Object` 类,因此所有的 Java 类都继承了这个方法。这个方法的...

    01-VIP-类加载机制深度剖析(1)1

    3. `TestJDKClassLoader.class.getClassLoader().getClass().getName()` 输出`sun.misc.Launcher$AppClassLoader`,显示应用程序类加载器负责加载用户自定义类。 4. `ClassLoader.getSystemClassLoader().getClass()...

    Scala编程详解 第14讲-Scala编程详解:面向对象编程之继承 共13页.pptx

    在这里,`Student`覆盖了`getName`方法,并通过`super.getName`调用了父类的原始实现。 `override`关键字同样可以用于覆盖父类的`val`字段,同时覆盖其对应的getter方法。例如: ```scala class Person { val ...

    weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB 类型转换解决办法

    } else if ("weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB".equals(in.getClass().getName())) { Method method = in.getClass().getMethod("getVendorObj", new Class[]{}); oracle.sql.CLOB clob = (oracle.sql...

    java学习资料-反射机制深入理解剖析

    1. 获取类的完整包名和类名,如`testReflect.getClass().getName()`所示。 2. 实例化一个类的对象,通过`Class.forName()`,`new TestReflect().getClass()`或直接使用`TestReflect.class`等方式。 3. 查找类的父类...

    Java中获取当前函数名、类名、当前类的文件名.doc

    - 解析: 这种方法利用了Java反射机制中的`getClass()`方法来获取当前对象所属类的信息,再通过调用`getName()`方法获取类的全限定名(包括包名)。 - 示例: ```java public class MyClass { public void ...

    JAVA-JVM-01类加载机制

    3. `TestJDKClassLoader.class.getClassLoader().getClass().getName()` 和 `ClassLoader.getSystemClassLoader().getClass().getName()` 返回的都是应用程序类加载器,因为这两个类是应用自定义的。 在自定义类...

    webservice.zip

    JAXBElement<?> requestElement = new JAXBElement(new QName(requestBody.getClass().getPackage().getName(), requestBody.getClass().getSimpleName()), requestBody.getClass(), requestBody); return ...

    Java反射机制 深入浅出

    每一个Java类都有一个与之对应的`Class` 对象,该对象包含了类的完整信息,包括类名、父类、实现的接口、字段、方法等。通过`Class` 对象,我们能够获取并操纵这些信息。 #### 三、Class类的实例化三种方式 - **第...

Global site tag (gtag.js) - Google Analytics