1. Java反射机制
  2. public class TestHibernate {
  3. @Test
  4. public void TestHb(){
  5. try {
  6. Class cs = Class.forName("testHibernate.Test1"); //classload 类
  7. Object oj = cs.newInstance(); //通过类NEW一个对象
  8. Method[] mt = cs.getMethods(); //获取所有方法
  9. for (Method method : mt) { //轮询出所有函数方法
  10. if(method.getName()=="m13"){ //通过函数名判断函数
  11. method.invoke(oj,1,2);
  12. for(Class parameter:method.getParameterTypes()){ //轮询出函数方法的参数
  13. System.out.println(parameter.getName()); //获取参数类型
  14. }
  15. System.out.println("返回值"+method.getReturnType()); //获取返回值类型
  16. }else if(method.getName()=="m12"){
  17. method.invoke(oj); //执行函数方法无参
  18. }else if(method.getName()=="getmeth"){
  19. System.out.println("123"+method.getReturnType());
  20. Object object = method.invoke(oj); //获取函数方法返回的类对象
  21. Class ccc = object.getClass(); //通过类对象获得类
  22. Field ff = ccc.getField("x2"); //获取变量对象
  23. int x1 = (int)ff.get(object); //获取属性值
  24. //getDeclaredMethod可获取私有方法
  25. Method met = ccc.getDeclaredMethod("xxx",new Class[]{int.class,int.class});
  26.  
  27. met.setAccessible(true);//设置可成 可访问
  28. Object i = met.invoke(object, x1,2);//调用带参函数方法
  29. System.out.println(i+"xxxxxxxxxxxxxxxxxxxxxxxxxx");
  30. }
  31.  
  32. }
  33. } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | SecurityException | NoSuchMethodException | NoSuchFieldException e) {
  34. // TODO Auto-generated catch block
  35. e.printStackTrace();
  36. }
  37. }
  38. }
  39. class Test2{
  40. static{
  41. System.out.println("classLoad test2");
  42. }
  43. public int x2 = 3;
  44. private int xxx(int x1,int x2){
  45. return x1*x2;
  46. }
  47. }
  48. class Test1{
  49. static{
  50. System.out.println("classLoad test1");
  51. }
  52. {
  53. System.out.println("new objcet tset1");
  54. }
  55.  
  56. public Test2 getmeth(){
  57. return new Test2();
  58. }
  59. public void m12(){
  60. System.out.println("m12");
  61. }
  62. public String m13(int b,int r){
  63. System.out.println(b+r);
  64. return b+r+"";
  65. }
  66. }

本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 下如何安装软件

    一.解析Linux应用软件安装包 通常Linux应用软件的安装包有三种: 1) tar包,如software-1.2.3-1.tar.gz.它是使用UNIX系统的打包工具tar打包的. 2) rpm包 ...

  2. bzoj2441 小W的问题

    bzoj2441 按照纵坐标排序,从小到大插入数列中,每个点i维护一个data[i]表示未插入序列中横坐标小于i的数的个数(用线段树)其实点i就是“W”中第一个极小点,那么f[j]就等于1到j-1中所 ...

  3. comboBox 手动输入后回车自动更新数据

    C# Winform ComboBox 在输入内容时 会在下拉菜单中显示 根据输入内容查询的结果 2014-01-02 16:42匿名 | 浏览 713 次 C# ComboBox 在输入内容时 会在 ...

  4. linux下一些可用库

    1. musl: 为了夸平台,采用小巧玲珑的libc进行静态编译.

  5. Android学习九:屏幕自适应

    android中不同手机分辨率适配问题 在项目开发的过程中,同一个布局对应不同的手机会显示出不同的效果.导致这个现象产生的原因是不同手机的分辨率不同.在android sdk提供的帮助文档中,我们可以 ...

  6. 拜拜了,浮动布局-基于display:inline-block的列表布局

    原创文章,转载请注明来自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com]本文地址:http://www.zhangxinxu.com/wordpress/?p=1194

  7. SSIS自定义数据流组件开发(血路)

    由于特殊的原因(怎么特殊不解释),需要开发自定义数据流组件处理. 查了很多资料,用了不同的版本,发现各种各样的问题没有找到最终的解决方案. 遇到的问题如下: 用VS2015编译出来的插件,在SSDTB ...

  8. coffeeScript中类的继承[学习篇]

    只是在看深入浅出coffeescript中感觉真的很好,不光是coffe写法简单,生成的js也值得学习,废话不多说了,直接抄个书上的例子 class Pet constructor: -> @i ...

  9. 【python】global

    #!/usr/bin/python # Filename: func_global.py def func(): global x print 'x is', x x = 2 print 'Chang ...

  10. 解决iis7 0x80070002 错误代码问题

    环境:iis7 win7 64位 vs2012 出现的问题:发布代码iis出现0x80070002 错误代码 解决方案分三步: 1.添加通配符脚本映射 请选择:C:\Windows\Microsoft ...