java代码反射实例下载 通俗理解java反射举例子

JAVA中反射是什么

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

成都创新互联公司主营桂东网站建设的网络公司,主营网站建设方案,成都App制作,桂东h5小程序定制开发搭建,桂东网站营销推广欢迎桂东等地区企业咨询

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

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

扩展资料:

JAVA中反射实例:

1、Class superClass=clazz.getSuperclass();//获取父类。

System.out.println("getSuperclass:"+superClass)。   

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

System.out.println("getInterfaces:"+interfaces.length)。

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

System.out.println("getConstructors:"+cons.length)。

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

java反射机制实例

import java.lang.reflect.Method;

public class InvokeTester

{

public int add(int param1, int param2)

{

return param1 + param2;

}

public String echo(String message)

{

return "hello: " + message;

}

public static void main(String[] args) throws Exception

{

Class? classType = InvokeTester.class;

Object invokeTester = classType.newInstance();

// System.out.println(invokeTester instanceof InvokeTester); //返回true

Method addMethod = classType.getMethod("add", new Class[] { int.class,int.class }); //第二个形参表示指定的add方法要接收为int的类型的两个参数

Object result = addMethod.invoke(invokeTester, new Object[]{1, 2}); //反射调用,将1,2传入InvokeTester.Class的实例invokeTester里的add方法。得返回的结果。

System.out.println((Integer)result);

System.out.println("---------------------");

Method echoMethod = classType.getMethod("echo", new Class[]{String.class});

Object result2 = echoMethod.invoke(invokeTester, new Object[]{"tom"});

System.out.println((String)result2);

}

}

Java如何实现反射静态加载和动态加载实例代码详解

1.Java动态加载类和静态加载类的区别

new创建对象的方式称作为静态加载,而使用Class.forName("XXX")称作为动态加载,它们俩本质的区别在于静态加载的类的源程序在编译时期加载(必须存在),而动态加载的类在编译时期可以缺席(源程序不必存在)。

2.为什么需要动态加载类

对于我自己的理解,动态加载类增加了程序的灵活性。比如一个程序中有50个功能,但你可能只会使用其中的一个,如果你用的是静态加载的方式,你必须在编译前提供100个功能的所有定义,否则无法编译通过,若你使用的是动态加载机制,则不需要如此大费周章,用哪一个就定义哪一个即可。

静态加载:

public class Office_Static {

public static void main(String[] args) {

//new 创建对象,是静态加载类,在编译时刻就需要加载所有的可能使用到的类

if("Word".equals(args[0])){

Word w = new Word();

w.start();

}

if("Excel".equals(args[0])){

Excel e = new Excel();

e.start();

}

}

}

这个程序编译时必须有Word和Excel这两个类存在才行,即使判断后用不到Excel也要加载

动态加载:

接口OfficeAble :

public interface OfficeAble {

public void start();}

用java实现类和对象的反射,代码最好有注释,谢谢

给你一个小的实例代码:

import java.lang.reflect.Method;

import java.lang.reflect.InvocationTargetException;

public class test {

public static void main(String args[]) throws NoSuchMethodException,

IllegalAccessException, InvocationTargetException {

Foo foo = new Foo("这个一个Foo对象!");

Class clazz = foo.getClass();

Method m1 = clazz.getDeclaredMethod("outInfo");

Method m2 = clazz.getDeclaredMethod("setMsg", String.class);

Method m3 = clazz.getDeclaredMethod("getMsg");

m1.invoke(foo);

m2.invoke(foo, "重新设置msg信息!");

String msg = (String) m3.invoke(foo);

System.out.println(msg);

}

}

class Foo {

private String msg;

public Foo(String msg) {

this.msg = msg;

}

public void setMsg(String msg) {

this.msg = msg;

}

public String getMsg() {

return msg;

}

public void outInfo() {

System.out.println("这是测试Java反射的测试类");

}

}


文章名称:java代码反射实例下载 通俗理解java反射举例子
本文网址:http://azwzsj.com/article/hephjc.html