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. 收藏:Linux系统信息查看命令大全

    系统# uname -a               # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue   # 查看操作系统版本# cat /proc/cpuinfo  ...

  2. Java中类的数据成员的初始化顺序

    对于单一类: 属性初始化 ---> 按顺序执行静态初始化块(只能操作静态属性) ---> 按顺序执行初始化块 ---> 构造方法 对于存在继承关系的类: 父类属性初始化 ---> ...

  3. 如果没有按照正常的先装iis后装.net的顺序,可以使用此命令重新注册一下:

    32位的Windows:---------------------------------------------------------------------------1. 运行->cmd ...

  4. Torch 网络层 参数的初始化问题

    Torch 网络层 参数的初始化问题 参考链接: https://github.com/Kaixhin/nninit 从 Torch 中自带的包,可以看到:https://github.com/tor ...

  5. JavaScriptPolyfillShim 在JavaScript中Shim和Polyfill有什么区别?

    在JavaScript的世界里,有两个词经常被提到,那就是Shim和Polyfill,它们指的都是什么,又有什么区别?在本文中,将简短的给大家介绍他们之间的联系和区别.Shim一个shim就是一个库, ...

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

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

  7. REPEATABLE-READ下批量更新数据的问题

    1. 当前mysql的隔离级别 REPEATABLE-READ 2. 用户读取的时候或者更改的时候(通过事务)   会对 更改的数据加行锁 和 gap锁 , 最终更改完毕后 去掉锁. (行锁表示这条数 ...

  8. [转]PHP如何关闭notice级别的错误提示

    1.在php.ini文件中改动error_reporting改为: error_reporting=E_ALL & ~E_NOTICE 2.如果你不能操作php.ini文件,你可以使用如下方法 ...

  9. css布局课件

    1.什么是CSS盒模型 我们的网页就是通过一个一个盒子组成的. 2.一个盒子拥有的属性:宽和高(width和height).内边距(padding).边框(border).外边距(margin) wi ...

  10. Unable to create Azure Mobile Service: Error 500

    I had to go into my existing azure sql database server and under the configuration tab select " ...