参考地址: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()); } }
相关推荐
final Class conmanClass = Class.forName(conman.getClass().getName()); final Field iConnectivityManagerField = conmanClass.getDeclaredField("mService"); iConnectivityManagerField.setAccessible(true)...
private Logger logger = Logger.getLogger(this.getClass().getName()); public void processBusiness(){ try { logger.info("start to processing..."); //business logic here. System.out....
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....
// 1.3 调用 Object 类中定义的 getClass()方法 Person p = new Person(); System.out.println(p.getClass().getName()); // 基本数据类型 // 2.1 使用 .class 表达式 System.out.println(int.class.getName...
System.out.println("args:" + args[0].getClass().getName()); System.out.println("Before invoke method..."); Object object = method.invoke(concreteClass, args); // 在这里可以添加其他逻辑 return ...
log.info("Error happened in class: " + target.getClass().getName()); log.info("Error happened in method: " + method.getName()); // ...更多日志记录 ``` 在记录完基本信息后,我们可以在`afterThrowing`...
- `super.getClass().getName()`返回`Base`类的全名,即`test.Base`(注意这里的`test`应该是包名)。 - `this.getClass().getSuperclass().getName()`同样返回`Base`类的全名,即`test.Base`。 --- #### 八、字符...
logger.debug(qconFactory + "[" + qcon.getClass().getName() + "]" + "[" + qsession.getClass().getName() + "]" + "[" + qsender.getClass().getName() + "]" + "[" + msg.getClass().getName() + "]");...
**解析:** `super.getClass().getName()`返回的是`Base`类的全名,因为`Test`类继承自`Base`。`this.getClass().getSuperclass().getName()`同样返回`Base`类的全名。 **答案:** 输出两次 `"test.Base"`。 #### 八...
- `new Reflect().getClass().getName()`通过创建一个`Reflect`类的实例,然后调用`getClass()`方法获取其`Class`对象,再调用`getName()`获取类名。 ##### 案例3:通过Class实例化其他类的对象 通过`Class`对象...
#### 二、`getClass()` 方法、`class` 属性和 `getName()` 方法的解析 **1. `getClass()` 方法** `getClass()` 是 Java 中的一个内置方法,它属于 `Object` 类,因此所有的 Java 类都继承了这个方法。这个方法的...
3. `TestJDKClassLoader.class.getClassLoader().getClass().getName()` 输出`sun.misc.Launcher$AppClassLoader`,显示应用程序类加载器负责加载用户自定义类。 4. `ClassLoader.getSystemClassLoader().getClass()...
在这里,`Student`覆盖了`getName`方法,并通过`super.getName`调用了父类的原始实现。 `override`关键字同样可以用于覆盖父类的`val`字段,同时覆盖其对应的getter方法。例如: ```scala class Person { val ...
} 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...
1. 获取类的完整包名和类名,如`testReflect.getClass().getName()`所示。 2. 实例化一个类的对象,通过`Class.forName()`,`new TestReflect().getClass()`或直接使用`TestReflect.class`等方式。 3. 查找类的父类...
- 解析: 这种方法利用了Java反射机制中的`getClass()`方法来获取当前对象所属类的信息,再通过调用`getName()`方法获取类的全限定名(包括包名)。 - 示例: ```java public class MyClass { public void ...
3. `TestJDKClassLoader.class.getClassLoader().getClass().getName()` 和 `ClassLoader.getSystemClassLoader().getClass().getName()` 返回的都是应用程序类加载器,因为这两个类是应用自定义的。 在自定义类...
JAXBElement<?> requestElement = new JAXBElement(new QName(requestBody.getClass().getPackage().getName(), requestBody.getClass().getSimpleName()), requestBody.getClass(), requestBody); return ...
每一个Java类都有一个与之对应的`Class` 对象,该对象包含了类的完整信息,包括类名、父类、实现的接口、字段、方法等。通过`Class` 对象,我们能够获取并操纵这些信息。 #### 三、Class类的实例化三种方式 - **第...