`
byandby
  • 浏览: 1695721 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Object getClass()方法

阅读更多
小菜总结到
    大家都知道Object类有一个getClass()方法 打开API看看它是这样说的

返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。
返回:表示此对象运行时类的 Class 对象。

  疑问来了 返回此Object的运行时类 它这里Object运行时类指那个类? 什么又是运行时类的Class对象 它到底是啥对象?
  来点代码吧 我们这里有两个类 Test类测试用的 还有一个Never类
Never类
package woca;

public class Never {
	  static{
		  System.out.println("Never类被初始化了");
	  }
	  public void shuChu(){
		  System.out.println("Never类shuChu()方法执行");
	  }
}


  Test类
package woca;

public class Test {
	static{
		System.out.println("Test类被初始化了");
	}
	public void testClass() throws Exception, Exception{
		this.getClass();
	}
	
	public void shuChu(){
		System.out.println("本类的Class对象");
	}
	
	public static void main(String[] args) throws Exception {
		Test t = new Test();
		t.testClass();
	}
}

猜猜会输出什么? 。。。。。。。。
输出
Test类被初始化了
到这里只能说明一个问题我们调用一个对象的getClass()方法会初始化这个类也就是执行static代码块  你可能会问这里的this指什么呢?  它指的那个对象呢?
答:是Object对象 其实你可以通过你的MyEclipse的自动代码提示功能看到 当你打点的时候会出来Object的许多方法
我们还是用代码来验证以下吧!下面我来改写main方法
package woca;

public class Test {
	static{
		System.out.println("Test类被初始化了");
	}
	public void testClass() throws Exception, Exception{
	     Object ob = this.getClass().newInstance();
		if (ob instanceof Object) {
			System.out.println("ob是一个Object实例");
			
		}
	}
	
	public void shuChu(){
		System.out.println("本类的Class对象");
	}
	
	public static void main(String[] args) throws Exception {
		Test t = new Test();
		t.testClass();
	}
}

输出结果是:
Test类被初始化了
ob是一个Object实例

所以this指的是Object对象

接下来我们看这个main方法
package woca;

public class Test {
	static{
		System.out.println("Test类被初始化了");
	}
	public void testClass() throws Exception, Exception{
		Test test = this.getClass().newInstance();
		test.shuChu();
	}
	
	public void shuChu(){
		System.out.println("本类的Class对象");
	}
	
	public static void main(String[] args) throws Exception {
		Test t = new Test();
		t.testClass();
		
	}
}

输出结果:
Test类被初始化了
本类的Class对象

这说明我们这句:Test test = this.getClass().newInstance();得到了一个Test对象  我们调用object.getClass()方法 返回一个Class对象
这个Class对象 和Test对象不同 然后我们调用newInstance()创建了一个实例
API 里边说返回运行时类的Class对象 其实就是说 当前运行这个类的Class对象(在你不指定对象的情况下)
java.lang.Class类里边有很多实用的方法 当你得到一个对象的Class对象之后就可以调用这些方法
这个类里边只要一个静态方法那就是forName("指定类名")其实它和getClass 的功能一样都会对一个类初始化都是返回一个对象的Class对象 只不过它的参数里边直接指定类名  注意这个参数 是完全限定类型鸟 得加上包名! 还有它是一个静态方法你可以直接Class.forName()这样用方便些如果你这样写:
this.getClass().forName("woca.Test");

效果和this.getClass();一样只不过上边那种有点二
forName()方法还有一个重载方法
类似这种
Class.forName("woca.Never", false, this.getClass().getClassLoader());

  第一个参数还是指定类名 第二个参数指定要不要初始化 第三个参数是指定类的加载器
我把第二参数改为false 就不会初始化Never这个类 也就不会执行静态代码块了!
2
3
分享到:
评论
2 楼 byandby 2010-08-28  
theskyofsky 写道
引用
猜猜会输出什么? 。。。。。。。。
输出
Java代码
Test类被初始化了 
Test类被初始化了到这里只能说明一个问题我们调用一个对象的getClass()方法会初始化这个类也就是执行static代码块  你可能会问这里的this指什么呢?  它指的那个对象呢?
答:是Object对象 其实你可以通过你的MyEclipse的自动代码提示功能看到 当你打点的时候会出来Object的许多方法


这个有点问题
  Test t = new Test();   这个会初始化Test类的,不是由this.getClass()初始化的。而且this指的是当前对象也就是一个Test,JAVA中所有的类都继承自Object,肯定具有Object的方法的。

嗯 this  是 本类对象的一个引用 ,,有时间 继续 研究 呵呵。。
1 楼 theskyofsky 2010-08-23  
引用
猜猜会输出什么? 。。。。。。。。
输出
Java代码
Test类被初始化了 
Test类被初始化了到这里只能说明一个问题我们调用一个对象的getClass()方法会初始化这个类也就是执行static代码块  你可能会问这里的this指什么呢?  它指的那个对象呢?
答:是Object对象 其实你可以通过你的MyEclipse的自动代码提示功能看到 当你打点的时候会出来Object的许多方法


这个有点问题
  Test t = new Test();   这个会初始化Test类的,不是由this.getClass()初始化的。而且this指的是当前对象也就是一个Test,JAVA中所有的类都继承自Object,肯定具有Object的方法的。

相关推荐

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

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

    JAVA之Object类所有方法

    6. **getClass()**: 返回对象的运行时类,即对象实际属于的类的`Class`对象,可以用来获取类的信息,如类名、构造器、方法等。 7. **notify()**: 唤醒一个等待在此对象监视器上的线程。线程通过调用`wait()`方法...

    Object类常用方法(csdn)————程序.pdf

    Object 类常用方法有 getClass()、hashCode()、toString()、equals()、finalize() 等。 getClass() 方法 getClass() 方法用于获取对象的实际类型。该方法返回了 Object 的 Class 对象,表示该对象的实际类型。应用...

    Spring framework(cve-2010-1622)漏洞利用指南 .docx

    但是,攻击者可以通过提交特殊的参数,例如"class",来访问Object的getClass方法,从而获取ClassLoader对象,并执行恶意代码。 三、漏洞利用 攻击者可以通过提交恶意参数,例如"class=xxx",来访问Object的...

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

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

    Java -核心类库 Object类常方法 Math类常用方法 System类常用方法 基本类型包装类常用方法等

    #### 一、Object类常用方法 在Java中,`Object`类是最基础的类,所有其他类都直接或间接继承自它。因此了解并掌握`Object`类的方法对于深入理解Java编程至关重要。 1. **toString() 方法**: - **用途**:提供了...

    JavaSE之Object与Object类

    - `toString()`方法是`Object`类中的一个关键方法,它的作用是返回对象的字符串表示。默认情况下,`toString()`方法返回的是类名加`@`后跟对象在内存中的哈希码的16进制表示。例如,`Person@3f99bd52`。 - 在实际...

    java之Object类方法技术分享PPT

    主要包含Object类中的getClass()、hashCode()、equals()、toString()方法的使用和作用,还包含一个3D旋转模型,还包含几个常见的面试题的解析,可用作学生每周技术分享或者上台演讲,适用于大学计算机专业相关人士。

    Object类和Scanner类

    **1.2 Object类的方法** - **`public int hashCode()`**: - 该方法返回对象的哈希码值,通常用来支持数据结构如哈希表的操作。 - 哈希码值是由哈希算法计算得出的一个整数值,与对象的实际内存地址相关联但不等同...

    src01 Object

    这意味着每一个类都直接或间接地继承自`Object`类,并且所有的对象(包括数组)都实现了该类提供的方法。`Object`类位于`java.lang`包中,是Java语言中最基础的类之一。 #### 二、主要方法详解 ##### 1. `getClass...

    day01【Object类、常用API】-笔记.md

    这意味着所有Java类都自动继承了`Object`类中的方法和属性。 #### 关键方法 - `public String toString()`: 返回该对象的字符串表示。默认情况下,此方法返回的是对象的类名和哈希码的十六进制表示。然而,在实际...

    java-object类

    2. **提供通用方法**:`Object` 类定义了一些非常重要的方法,如 `equals()`、`hashCode()` 和 `toString()`,这些方法在几乎所有 Java 类中都有应用。 3. **支持多态性**:通过继承 `Object` 类,Java 支持多态性,...

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

    Java 中的 getClass() 方法是 Object 类的一个方法,其原型为 `public final Class<?> getClass()`, 返回值为当前运行时类的 Class 对象。这个方法可以用来获取当前类的 Class 对象,从而可以进行反射操作。 在 ...

    Java常用的反射方法

    代码中包含的方法有如下 : 1. 创建一个Person实体类 2. 反射获取Class类对象的三种方法 2.1 通过全类名的方式获取 2.2 类名.class 2.3 实例对象.getClass() ... 5.3 获取所有方法(包含Object的方法)

    java中关键字Object详解

    `Object`类提供了基本的方法,这些方法是所有Java对象共有的。下面我们将详细探讨这些方法及其作用。 1. **构造器**: `Object`类有一个默认的无参构造器,它不做任何特别的操作。当你创建一个类的对象时,这个...

    Java instanceof和getClass()区别实例解析

    从上面的代码可以看出,instanceof 操作符判断对象是否是某个类或其子类的实例,而 getClass() 方法判断对象的实际类别。 四、重写 equals 方法 在 Java 中,equals 方法用于判断两个对象是否相等。默认情况下,...

    JAVA反射机制中getClass和class对比分析

    它们的主要区别在于,getClass方法是在运行时才确定的,而class方法是在编译时就确定了。 例如,在下面的代码中: ``` class A{ public void func(){ }} public class Test { public static void main(String[] ...

    Map 转为Object Object 转为 Map java jdk1.4以上

    2. **使用反射填充JavaBean**: 通过遍历Map的键值对,利用反射获取JavaBean的set方法,并设置相应的属性值。 ```java public static Object mapToObject(Map, Object> map, Class<?> beanClass) throws Exception {...

    Java面向对象(进阶)- Object类的详细概述

    - `getClass()`:返回对象的Class对象,该对象包含有关对象的类的信息,如类名、方法等。 - `hashCode()`:返回对象的哈希码,用于哈希表(如HashMap)的快速查找。两个相等的对象应该返回相同的哈希码。 3. **...

    谈谈Object下有哪些方法?

    4. **getClass()**: 这是一个final方法,返回运行时对象的实际类型,即返回一个Class对象,代表了运行时对象所属的类。通常用于获取对象的类信息。 5. **equals()**: 默认情况下,equals方法检查两个对象的引用是否...

Global site tag (gtag.js) - Google Analytics