Java反射中的getClass()方法】的更多相关文章

Java反射学习 所谓反射,可以理解为在运行时期获取对象类型信息的操作.传统的编程方法要求程序员在编译阶段决定使用的类型,但是在反射的帮助下,编程人员可以动态获取这些信息,从而编写更加具有可移植性的代码.严格地说,反射并非编程语言的特性,因为在任何一种语言都可以实现反射机制,但是如果编程语言本身支持反射,那么反射的实现就会方便很多. 1,获得类型类 我们知道在Java中一切都是对象,我们一般所使用的对象都直接或间接继承自Object类.Object类中包含一个方法名叫getClass,利用这个方…
package com.zsw.test; import java.lang.reflect.Method;import java.lang.reflect.InvocationTargetException; /** * <p>Title: java反射中Method类invoke方法的使用方法</p> * * <p>Description: </p> * * <p>Copyright: Copyright (c) 2009</p>…
JAVA反射中的getFields()方法和getDeclaredFields ()方法的区别   关于获取类的字段有两种方式:getFields()和getDeclaredFields().我们先来看看这两者的区别吧: getFields():获得某个类的所有的公共(public)的字段,包括父类中的字段. getDeclaredFields():获得某个类的所有声明的字段,即包括public.private和proteced,但是不包括父类的申明字段. 同样类似的还有getConstruct…
1.获得类型类 可以看到,对象a是A的一个实例,A是某一个类,在if语句中使用a.getClass()返回的结果正是类A的类型类,在Java中表示一个特定类型的类型类可以用“类型.class”的方式获得,因为a.getClass()获得是A的类型类,也就是A.class,因此上面的代码执行的结果就是打印出“equal”.特别注意的是,类型类是一一对应的,父类的类型类和子类的类型类是不同的,因此,假设A是B的子类,那么如下的代码将得到“unequal”的输出: 因此,如果你知道一个实例,那么你可以…
详解Object.getClass()方法,这个方法的返回值是Class类型,Class c = obj.getClass(); 通过对象c,我们可以获取该对象的所有成员方法,每个成员方法都是一个Method对象:我们也可以获取该对象的所有成员变量,每个成员变量都是一个Field对象:同样的,我们也可以获取该对象的构造函数,构造函数则是一个Constructor对象,具体见下面的例子 package classTest; import java.lang.reflect.Constructor;…
关于获取类的字段有两种方式:getFields()和getDeclaredFields().我们先来看看这两者的区别吧: getFields():获得某个类的所有的公共(public)的字段,包括父类中的字段. getDeclaredFields():获得某个类的所有声明的字段,即包括public.private和proteced,但是不包括父类的申明字段. 同样类似的还有getConstructors()和getDeclaredConstructors().getMethods()和getDe…
桥接方法是 JDK 1.5 引入泛型后,为了使Java的泛型方法生成的字节码和 1.5 版本前的字节码相兼容,由编译器自动生成的方法.我们可以通过Method.isBridge()方法来判断一个方法是否是桥接方法. 假定接口 public interface SuperClass<T> { void method(T t); } 它的一个实现类 public class AClass implements SuperClass<String> { @Override public…
先讲一下java中的反射: 反射就是将类别的各个组成部分进行剖析,可以得到每个组成部分,就可以对每一部分进行操作 在比较复杂的程序或框架中来使用反射技术,可以简化代码提高程序的复用性. 讲的是Method类的invoke()方法. 既然是讲invoke方法,那就不讲怎么使用反射了,代码上来先: package online; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetExcepti…
Java中Class.forName和classloader都可以用来对类进行加载. Class.forName除了将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static块. 而classloader只干一件事情,就是将.class文件加载到jvm中,不会执行static中的内容,只有在newInstance才会去执行static块. Class.forName(name,initialize,loader)带参数也可控制是否加载static块.并且只有调用了newI…
getDeclaredMethods()          返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共.保护.默认(包)访问和私有方法,但不包括继承的方法. getMethods()          返回一个包含某些 Method 对象的数组,这些对象反映此 Class 对象所表示的类或接口(包括那些由该类或接口声明的以及从超类和超接口继承的那些的类或接口)的公共 member 方法. 通俗的解释: getDeclaredMeth…