Java反射机制
public class TestHibernate {
@Test
public void TestHb(){
try {
Class cs = Class.forName("testHibernate.Test1"); //classload 类
Object oj = cs.newInstance(); //通过类NEW一个对象
Method[] mt = cs.getMethods(); //获取所有方法
for (Method method : mt) { //轮询出所有函数方法
if(method.getName()=="m13"){ //通过函数名判断函数
method.invoke(oj,1,2);
for(Class parameter:method.getParameterTypes()){ //轮询出函数方法的参数
System.out.println(parameter.getName()); //获取参数类型
}
System.out.println("返回值"+method.getReturnType()); //获取返回值类型
}else if(method.getName()=="m12"){
method.invoke(oj); //执行函数方法无参
}else if(method.getName()=="getmeth"){
System.out.println("123"+method.getReturnType());
Object object = method.invoke(oj); //获取函数方法返回的类对象
Class ccc = object.getClass(); //通过类对象获得类
Field ff = ccc.getField("x2"); //获取变量对象
int x1 = (int)ff.get(object); //获取属性值
//getDeclaredMethod可获取私有方法
Method met = ccc.getDeclaredMethod("xxx",new Class[]{int.class,int.class}); met.setAccessible(true);//设置可成 可访问
Object i = met.invoke(object, x1,2);//调用带参函数方法
System.out.println(i+"xxxxxxxxxxxxxxxxxxxxxxxxxx");
} }
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | SecurityException | NoSuchMethodException | NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class Test2{
static{
System.out.println("classLoad test2");
}
public int x2 = 3;
private int xxx(int x1,int x2){
return x1*x2;
}
}
class Test1{
static{
System.out.println("classLoad test1");
}
{
System.out.println("new objcet tset1");
} public Test2 getmeth(){
return new Test2();
}
public void m12(){
System.out.println("m12");
}
public String m13(int b,int r){
System.out.println(b+r);
return b+r+"";
}
}

本dome为学习测试使用的

Java反射机制

public class TestHibernate {

@Test

public void TestHb(){

try {

Class cs = Class.forName("testHibernate.Test1");        //classload 类

Object oj = cs.newInstance();                                                //通过类NEW一个对象

Method[] mt = cs.getMethods();                                                //获取所有方法

for (Method method : mt) {                                                        //轮询出所有函数方法

if(method.getName()=="m13"){                                        //通过函数名判断函数

method.invoke(oj,1,2);

for(Class parameter:method.getParameterTypes()){        //轮询出函数方法的参数

System.out.println(parameter.getName());                        //获取参数类型

}

System.out.println("返回值"+method.getReturnType());        //获取返回值类型

}else if(method.getName()=="m12"){

method.invoke(oj);                                                        //执行函数方法无参

}else if(method.getName()=="getmeth"){

System.out.println("123"+method.getReturnType());

Object object = method.invoke(oj);                        //获取函数方法返回的类对象

Class ccc = object.getClass();                                //通过类对象获得类

Field ff = ccc.getField("x2");                         //获取变量对象

int x1 = (int)ff.get(object);                                //获取属性值

//getDeclaredMethod可获取私有方法

Method met = ccc.getDeclaredMethod("xxx",new Class[]{int.class,int.class});

met.setAccessible(true);//设置可成 可访问

Object i = met.invoke(object, x1,2);//调用带参函数方法

System.out.println(i+"xxxxxxxxxxxxxxxxxxxxxxxxxx");

}

}

} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | SecurityException | NoSuchMethodException | NoSuchFieldException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

class Test2{

static{

System.out.println("classLoad  test2");

}

public int x2 = 3;

private int xxx(int x1,int x2){

return x1*x2;

}

}

class Test1{

static{

System.out.println("classLoad  test1");

}

{

System.out.println("new objcet  tset1");

}

public Test2 getmeth(){

return new Test2();

}

public void m12(){

System.out.println("m12");

}

public String m13(int b,int r){

System.out.println(b+r);

return b+r+"";

}

}

Java反射机制DOME的更多相关文章

  1. 第28章 java反射机制

    java反射机制 1.类加载机制 1.1.jvm和类 运行Java程序:java 带有main方法的类名 之后java会启动jvm,并加载字节码(字节码就是一个类在内存空间的状态) 当调用java命令 ...

  2. Java反射机制

    Java反射机制 一:什么事反射机制 简单地说,就是程序运行时能够通过反射的到类的所有信息,只需要获得类名,方法名,属性名. 二:为什么要用反射:     静态编译:在编译时确定类型,绑定对象,即通过 ...

  3. java基础知识(十一)java反射机制(上)

    java.lang.Class类详解 java Class类详解 一.class类 Class类是java语言定义的特定类的实现,在java中每个类都有一个相应的Class对象,以便java程序运行时 ...

  4. java基础知识(十一)java反射机制(下)

    1.什么是反射机制? java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象都能够调用他的属性和方法,这种动态获取属性和方法的功能称为java的反射机制. ...

  5. Java反射机制专题

    ·Java Reflection Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方 ...

  6. java反射机制深入详解

    java反射机制深入详解  转自:http://www.cnblogs.com/hxsyl/archive/2013/03/23/2977593.html 一.概念 反射就是把Java的各种成分映射成 ...

  7. 反射——Java反射机制

    反射概述 什么是反射? ①   反射的概念是由Smith在1982年首次提出的,主要指程序可以访问.检测和修改它本身状态或行为的一种能力. ②   JAVA反射机制是在运行状态中,对应任意一个类,都能 ...

  8. Java反射机制可以动态修改实例中final修饰的成员变量吗?

    问题:Java反射机制可以动态修改实例中final修饰的成员变量吗? 回答是分两种情况的. 1. 当final修饰的成员变量在定义的时候就初始化了值,那么java反射机制就已经不能动态修改它的值了. ...

  9. Java反射机制学习与研究

    Java反射机制:可以获取正在运行时的Java对象. 1.判断运行时对象对象所属的类. 2.判断运行时对象所具有的成员变量和方法. 3.还可以调用到private方法,改变private变量的值. S ...

随机推荐

  1. Android NDK几点回调方式

    一.NDK中获取android设备ID的方式 Java代码如下(获取设备ANDROID_ID): final String androidId = Secure.getString(context.g ...

  2. API测试

    API(Application Programming Interface)包含: 单元测试(Unit Testing).模块测试(Module Testing).组件测试(Component Tes ...

  3. c :set标签的陷阱(未解决)

    三层嵌套的list,第二层解套的时候用Cset标签给设置别名,第一个对象正常使用,第二个对象开始传入内存的地址的值,但是无法获取对象属性

  4. HttpClient请求

    HttpClient HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包, 并且它支持 HTTP ...

  5. $.post() 传递多个参数.

    $("#button").click(function() { /获取表单中id为idname和count的文本值付给property的两个属性 var property={&qu ...

  6. 利用html5的localStorage做一个备忘录

    实现一个便签功能,可以记录内容和写的时间,当网页从新载入,可以读取以前的记录. html文档 <!DOCTYPE html> <html> <head lang=&quo ...

  7. rhel 5.8 and 6.4 yum配置

    rhel 5.8 and 6.4 yum配置 6.4 [Packages]name=Packagesenabled=1gpgcheck=0baseurl=file:///iso 5.8 [Packag ...

  8. SQL 存储过程中QUOTED_IDENTIFIER on/off

    http://huihai.iteye.com/blog/1005144 在存储过程中经常会有 SET QUOTED_IDENTIFIER on SET QUOTED_IDENTIFIER off S ...

  9. PHP 获取指定目录下所有文件(包含子目录)

    PHP 获取指定目录下所有文件(包含子目录) //glob — 寻找与模式匹配的文件路径 $filter_dir = array('CVS', 'templates_c', 'log', 'img', ...

  10. Gemfile分平台加载gem

    Gemfile分平台加载gem 区分平台以便加载不同的web server,象tzinfo-data只适用于windows # Windows does not include zoneinfo fi ...