java中反射的三种方法是

java中反射的三种方法是,第1张

第一种:通过forName()方法

第二种:类class;

第三种:对象getClass()。

举例如下:

package

test;

public class Demo{

public static void

main(){

Class<> c1 = null;

Class<> c2 =

null;

Class<> c3 =

null;

//三种反射用实例化方式

try{

//最常用的一种形式

c1 =

ClassforName("testX");

}catch(ClassNotFoundException

e){

eprintStackTrace();

}

//通过Object类中的方法实例化

c2

= new X()getClass();

//通过类class实例化

c3 =

Xclass;

Systemoutprintln("类名:" + c1getName());

//得到类名

Systemoutprintln("类名:" + c2getName());

//得到类名

Systemoutprintln("类名:" + c3getName());

//得到类名

}

}

使用getClass方法可以获取一个对象的类型类,然后在调用该类的方法可以获取该类的相关信息,比如父类的名字,该类的名字等等:

package test;

import javalangreflectField;

import javalangreflectMethod;

public class Demo2 {

String username = "sss";

public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, NoSuchFieldException, SecurityException, NoSuchMethodException {

Demo2 t = new Demo2();

if (Demo2class == tgetClass()) {

Systemoutprintln("equal");

}

// 获取类名

Systemoutprintln(tgetClass()getName());

// 获取父类名

Systemoutprintln(tgetClass()getSuperclass());

//获取类中某个属性

Field f = tgetClass()getField("username");

//获取类中某个方法

Method m = tgetClass()getDeclaredMethod("main", String[]class);

}

JAVA中反射是动态获取信息以及动态调用对象方法的一种反射机制。

Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。而这也是Java被视为动态语言的一个关键性质。

Java反射的功能是在运行时判断任意一个对象所属的类,在运行时构造任意一个类的对象,在运行时判断任意一个类所具有的成员变量和方法,在运行时调用任意一个对象的方法,生成动态代理。

扩展资料:

JAVA中反射实例:

1、Class superClass=clazzgetSuperclass();//获取父类。

Systemoutprintln("getSuperclass:"+superClass)。   

2、Class[] interfaces=clazzgetInterfaces();//获取实现接口。

Systemoutprintln("getInterfaces:"+interfaceslength)。

3、Constructor[] cons=clazzgetConstructors();//构造方法。

Systemoutprintln("getConstructors:"+conslength)。

参考资料来源:百度百科: JAVA反射机制

1什么是反射

反射就是在运行状态把 Java  类中的各种成分映射成相应相应的 Java  类,可以动态得获取所有的属性以及动态调用任意一个方法。

1)一段java代码在程序的运行期间会经历三个阶段:source-->class-->runtime

2)Class对象在java中用一个Class对象来表示一个java类的class阶Class对象封装了一个java类定义的成员变量、成员方法、构造方法、包名、类名等。

2反射怎么用

1)获得java类的各个组成部分,首先需要获得代表java类的Class对象 获得Class对象有以下三种方式:

Classforname(className)            用于做类加载

objgetClass()                              用于获得对象的类型

类名class                                    用于获得指定的类型,传参用

2)反射类的构造方法,获得实例

Class clazz = 类名class;

Constuctor con = clazzgetConstructor(new Class[]{paramClazz1,paramClazz2,});

connewInstance(params);

内省

什么是内省

通过反射的方式 *** 作JavaBean的属性,jdk提供了PropertyDescription类来 *** 作访问JavaBean的属性,Beantils工具基于此来实现。

2内省怎么用

1) *** 作一个属性

Object obj = new Object();

PropertyDescriptor pd = new PropertyDescriptor(propertyName,Class);

声明属性描述对象,一次只可描述一个属性

Method m = pdgetWriterMethod();//获取setter方法

minvoke(obj,value);

Method m = pdgetReaderMethod();//获取getter方法

Object value = minvoke(obj);

反射机制并没有什么神奇之处。反射与RTTI的本质区别只是检查一个类的class文件的时机不同:

反射:class 文件是在编译时不可获得的,所以在运行时打开和检查未知类的class文件从而变已知。

RTTI:  class 文件是在编译时打开和检查。

以上就是关于java中反射的三种方法是全部的内容,包括:java中反射的三种方法是、java 获取对象的数据类型的方法、JAVA中反射是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9352698.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存