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. strlen(); strcpy(); strcat(); strcmp() ---笔记

    指针小知识点: int a =10; int *p=&a; int *q=p;        //p中保存的是a的地址 int *q=p;       //将p的值赋给q 作用是让q也指向a ...

  2. 在MyEclipse和Eclipse中添加Hibernate开发工具

    一.插件准备 MyEclipse需要的插件:HibernateTools-3.2.4.zip Eclipse需要的插件:jbosstools-4.2.3.Final_2015-03-26_22-41- ...

  3. js中二维数组的初始化

    在编程过程中,很多情况下(涉及到坐标.层级操作)我们都会用到二维数组,下面介绍介绍几种二维数组初始化的方法: 方法一.直接定义并且初始化,这种情况适用于数量和值已知的数组: var arr=[[&qu ...

  4. 使用keytool 生成证书

    keytool 工具介绍 keytool 是java 用于管理密钥和证书的工具,其功能包括: 1 创建并管理密钥 2 创建并管理证书 3 作为CA 为证书授权 4 导入导出证书 keytool 采用k ...

  5. JQuery实现列表中复选框全选反选功能封装

    我们在做列表的时候经常会遇到全选,反选进行批量处理问题,例如: 我当时就是简单的实现了,然后想封装到公共的js中,封装的太烂,不好意思贴出来了(就是把实现代码之间放到公共js中,然后每个页面都用固定的 ...

  6. java1234教程系列笔记 S1 Java SE 02 eclipse初步使用、注释、标识符

    第二章 第一节,讲了简单使用eclipse 写控制台程序.没有讲包,直接用的默认的包名. 还是编写了两个控制台例子 public class HelloWorld { public static vo ...

  7. PHP foreach使用

    <?php $arr = array("1"=>"100","2"=>"200","3&qu ...

  8. 在CentOS中将/var等已有目录挂载到新添加的硬盘

    1.查看当前硬盘使用状况: [root@gluster_node1 ~]# df -h Filesystem            Size  Used Avail Use% Mounted on / ...

  9. 解决duplicate symbols for architecture x86_64错误

    duplicate symbols for architecture x86_64 两个不第三方SDK之间的文件里面内容重复了,类似 file.h+file.m 和 CHfile.h+CHfile.m ...

  10. 1.系统生命开发周期(SDLC)

    哎,首先我恭喜我,这学期学了一门老师们都说非常重要,而学生们都说哪里重要的课,它就是与<软件工程>课齐名的<系统分析与设计>!!骚年,不背不记,你就死定了!! 首先俺领你认识一 ...