`
kuaile863
  • 浏览: 115433 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

反射应用(二)

阅读更多

 

反射应用(二)

 

 紧接着我们学习了反射应用如何去反射类中的方法在里面的代码:

 

1.         错误:  java.lang.InstantiationException: com.csdn.java02.Student

2.         at java.lang.Class.newInstance0(Class.java:340)

3.         at java.lang.Class.newInstance(Class.java:308)

4.         at com.csdn.java02.Work.test1(Work.java:24)

5.         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

6.         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

7.         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

8.         at java.lang.reflect.Method.invoke(Method.java:597)

9.         at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)

10.     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)

11.     at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)

12.     at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)

13.     at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)

14.     at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)

15.     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)

16.     at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)

17.     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)

18.     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)

19.     at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)

20.     at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)

21.     at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)

22.     at org.junit.runners.ParentRunner.run(ParentRunner.java:220)

23.     at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)

24.     at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

25.     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)

26.     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)

27.     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)

28.     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

29.     错误解析:在使用classnewInstance()方法的时候必须确保Student类中有一个无参数的构造器

30.     加载类中的方法如何用反射输出:

31.     解析 如何获取类中所有方法

32.     @Test

33.     public void test()throws Exception{

34.     //1加载类

35.     Class cls = Class.forName("cn.csdn.reflect.Student");

36.     /*//2、解析构造器

37.     Constructor csr = cls.getConstructor(null);

38.     //3、创建类的实例

39.     Student entity = (Student)csr.newInstance(null);*/

40.     Student entity = (Student)cls.newInstance();

41.     Method mds[] = cls.getMethods();

42.     for(Method m:mds){

43.     System.out.println(m.toGenericString());

44.     }

45.     }

46.     解析:public void study()方法

47.     @Test

48.     public void test1()throws Exception{

49.     //1加载类

50.     Class cls = Class.forName("cn.csdn.reflect.Student");

51.     Student entity = (Student)cls.newInstance();

52.     //2解析方法

53.     Method md = cls.getMethod("study", null);

54.     //3、执行

55.     Object obj = md.invoke(entity, null);//当没有返回值的时候 ,返回的是null

56.     System.out.println(obj);

57.     /*Student st = new Student();

58.     st.study();*/

59.     }

60.     ③解析     public int getSum(int a,int b)方法

61.     @Test

62.     public void test2()throws Exception{

63.     //1.加载类

64.     Class cls = Class.forName("cn.csdn.reflect.Student");

65.     Student entity =(Student)cls.newInstance();

66.     //解析方法

67.     Method md = cls.getMethod("getSum", int.class,int.class);

68.     //执行

69.     Object obj = md.invoke(entity, 12,12);

70.     System.out.println((Integer)obj);

71.     }

72.  ④解析 类中的主方法 public static void main(String[] args)

73. @Test

74. public void test3()throws Exception{

75. Class cls=Class.forName("com.csdn.java02.Student");

76. Student student=(Student)cls.newInstance();

77. Method md=cls.getMethod("main",String[].class);

78. String str[]={"111","123"};

79. Object obj=md.invoke(student,(Object)str);

80. System.out.println(obj);

81.     }

1
3
分享到:
评论

相关推荐

    C# 反射技术应用

    #### 二、反射基本概念 反射可以让我们在运行时获取.NET类型的所有信息,包括类、结构体、委托、接口和枚举等。通过反射,我们可以获取这些类型成员的详细信息,比如方法、属性、事件以及构造函数等,并且可以进一步...

    java的反射机制及其实际应用

    #### 二、Java中的类反射 ##### 2.1 Reflection的工作机制 Java中的反射机制允许运行中的程序检查和修改自身的结构和行为。这种能力在其他编程语言中是非常罕见的,比如Pascal、C或C++等静态类型语言就没有这样的...

    java反射机制应用

    #### 二、Java反射机制的应用场景及示例 ##### 1. 判断一个类是否是某个类的实例或子类 ```java Class<?> cls = Class.forName("com.example.Jdk"); boolean isInstance = cls.isInstance(new Jdk()); System.out....

    利用aidl和反射获取应用的缓存,应用大小等数据

    **二、反射** 反射是Java编程语言的一个特性,允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Android中,我们可以使用反射来访问那些未公开的API,比如获取应用的缓存信息。 1. **获取...

    计算二向反射分布函数的专业模型_matlab_二向反射分布函数模型_

    二向反射分布函数(Bidirectional Reflectance Distribution Function,简称BRDF)是计算机图形学中的一个核心概念,用于描述物体表面如何散射入射光。在3D渲染和照明模拟中,理解并精确计算BRDF是至关重要的,因为...

    .NET中反射的应用 获取Dll参数

    标题提到的".NET中反射的应用 获取Dll参数",指的是通过反射来获取DLL(动态链接库)中的类、方法、参数等元数据。这在需要动态调用DLL中的功能或者需要在不修改原有代码的情况下扩展功能时非常有用。下面将详细介绍...

    WENOZ+格式求解二维欧拉方程双马赫数反射算例

    在本案例中,WENOZ+格式被应用于求解二维欧拉方程的双马赫数反射问题。这意味着,程序将使用WENOZ+差分格式离散化二维欧拉方程,并采用适当的边界条件来模拟流体在固体壁面上的反射。网格参数和Courant-Friedrichs-...

    反射实例-JAVA反射机制

    #### 二、Java中的类反射 Java的反射机制是一种强大的工具,允许程序在运行时检查和操作类、接口、字段和方法等。这是Java语言特有的功能,使得Java程序比其他语言(如C、C++)更加灵活。 ##### 2.1 Reflection的...

    Java反射机制学习(二)

    这篇博文"Java反射机制学习(二)"可能深入探讨了如何利用反射进行动态类型处理、访问私有成员以及创建对象等核心概念。在这里,我们将详细讨论Java反射的基本用法及其在实际开发中的应用。 1. **什么是反射**: ...

    金属高反膜特性及光谱反射率曲线

    #### 二、金属高反射膜概述 金属高反射膜是指能够将大部分甚至全部入射光能量反射回去的一种光学元件。根据不同的需求,金属高反射膜可以分为几类: 1. **单一金属膜**:适用于对反射率有基本要求但对吸收率和透射...

    红外反射式传感器在自主式寻迹小车导航中的应用

    #### 二、红外反射式传感器原理及特点 红外反射式传感器是一种常用的近距离检测传感器,它通过发射红外光,并接收由物体反射回来的光线来检测物体的存在与否。这种传感器具有响应速度快、成本低、易于集成等优点,...

    电磁波透射系数和反射系数的详细讲解

    二、电磁波反射系数 电磁波反射系数(Reflection Coefficient)是指电磁波在介质界面上的反射行为。它是电磁波在介质界面上的反射行为的描述。电磁波反射系数通常用Γ(gamma)表示。它的计算公式为: Γ = (E_r /...

    P波入射C程序_P波反射系数计算_反射系数_

    在实际应用中,你可能需要对输入数据进行有效性检查,并考虑异常处理,以确保程序的健壮性。 通过这个C程序,我们可以方便地计算任意两种介质之间P波的反射系数,从而在地质勘探或地震分析中分析波的传播特性。了解...

    计算多层媒质的反射和透射系数,多层介质膜的反射率,matlab

    在提供的"版本一、版本二"文件中,很可能是两个不同的MATLAB代码实现,可能是为了对比不同算法的效率或精度,或者是不同版本的优化。分析和比较这两个版本的代码,可以帮助我们更好地理解多层媒质反射透射问题的求解...

    MATLAB 中的反射变换

    在二维空间中,反射通常涉及通过一条直线(即反射轴)进行操作,使得所有点关于这条线形成对称。在三维空间中,反射可能涉及到一个平面。反射变换可以用一个2x2或3x3的矩阵来表示,这个矩阵的特征值是1,但有至少一...

    .net中的反射,asp.net反射

    二、反射的基本操作 1. 获取类型信息:通过Type类,我们可以获取任何类型的完整信息,包括类名、基类、接口、成员等。例如,typeof(MyClass)返回MyClass的Type对象。 2. 动态创建对象:使用Type对象的GetMethod、Get...

Global site tag (gtag.js) - Google Analytics