getMethod方法调用疑惑

问题描述

Employee是一个类,getName和raiseSalary是该类中的方法,现在通过Class类的getMethod方法获得获得这两个方法的方法指针,调用如下Java codeMethod m1=Employee.class.getMethod("getName");Method m2=Employee.class.getMethod("raiseSalary",double.class);请问Employee.class.getMethod的class表示什么,去掉class可以么?

解决方案

Employee.class.getMethod 通过反射机制来获取 Employee 类中的方法,跟 Employee e = new Employee(); e.getClass().getMethod 是一样的效果的getMethod是Class中的方法,当然不能去掉class了JAVA反射机制是在运行状态中,对于任意一个类,都能够得到这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 概括一下: 反射就是让你可以通过名称来得到对象(类,属性,方法)的技术。 例如我们可以通过类名来生成一个类的实例; 知道了方法名,就可以调用这个方法;知道了属性名就可以访问这个属性的值。
解决方案二:
通俗地说,就是这样子。。。。。。。java里有一个类叫做Class类,我们每次定义一个类的时候,比如User类,虚拟机加载的时候就会生成一个Class类的对象,User.class,通过User.class就可以知道user这个类有哪些属性和方法,然后才能载入这个User类,供我们调用java反射也是基于这个class类Method m1=Employee.class.getMethod("getName"); 这个就是说通过Employee.class这个对象的getMethod方法,获取到Employee类定义的getName方法
解决方案三:
引用public final class Class<T>extends Objectimplements Serializable, GenericDeclaration, Type, AnnotatedElementClass 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象。 Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。
解决方案四:
Class<Employee> clazz=Employee.class;Method m1=clazz.getMethod("getName"); Method m2=clazz.getMethod("raiseSalary",double.class); getMethod是Class类的方法

时间: 2024-11-08 21:13:18

getMethod方法调用疑惑的相关文章

MFC中WMP控件的使用方法的疑惑

问题描述 MFC中WMP控件的使用方法的疑惑 在用MFC做一个音乐播放器,插入WMP控件后,不知道如何使用它,怎么才能调用到他本身自带的类,比如fullscreen,怎么才能用他来设置全屏

对于java equals方法的疑惑。

问题描述 对于java equals方法的疑惑. String s1 = new String("123"); String s2 = new String("123"); System.out.println(s1.equals(s2)); Test t1=new Test("123"); Test t2=new Test("123"); System.out.println(t1.equals(t2)); 为何上面输出的是

spring声明式事务 同一类内方法调用事务失效

只要避开Spring目前的AOP实现上的限制,要么都声明要事务,要么分开成两个类,要么直接在方法里使用编程式事务 [问题]        Spring的声明式事务,我想就不用多介绍了吧,一句话"自从用了Spring AOP啊,事务管理真轻松啊,真轻松:事务管理代码没有了,脑不酸了,手不痛了,一口气全配上了事务:轻量级,测试起来也简单,嘿!".不管从哪个角度看,轻量级声明式事务都是一件解放生产力的大好事.所以,我们"一直用它".         不过,最近的一个项目里

C#中类型Type的GetMethod方法

C#中类型Type有个GetMethod方法,调用该方法可获取指定方法名的方法信息实例. 使用时,其参数一般为2个,一个是方法名称字符串(可设置条件忽略大小写),另外一个参数为搜索方法的条件枚举. 该方法返回的是MethodInfo类型的实例,获取到了这个实例之后,我们就可以调用并执行该方法了. MethodInfo method = type.GetMethod( funcName , BindingFlags.IgnoreCase | BindingFlags.Static | Bindin

异常-rmi通讯部分方法调用成功,部分调用失败

问题描述 rmi通讯部分方法调用成功,部分调用失败 rmi运行一段时间后,可能是几天也可能是几周.突然rmi客户端出现部分rmi方法调用不通.抛异常java.rmi.unmarshalException:error unmarshlling return;nested exception is; java.io.EOFException at sum.rmi.server.UnicastRef.invoke(UnicastRef.java:173)

jquery.Ajax()方法调用Asp.Net后台的方法解析

 本篇文章主要是对jquery.Ajax()方法调用Asp.Net后台的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法. 先来个简单的实例热热身吧.   1.无参数的方法调用 asp.net code:    代码如下: using System.Web.Script.Services;      [WebMethod]    public static string SayHello()    {   

JSP EL表达式支持方法调用

在JEE6中,JSP中的EL表达式支持带参数的方法调用了.可以像这样调用: ${foo.bar(baz)} . 最新的实现是JUEL,大家可以下载试用一下.下面代码就是测试如何使用: // the ExpressionFactory implementation is de.odysseus.el.ExpressionFactoryImpl| System.setProperty("javax.el.methodInvocations", "true"); Expr

java方法调用的绑定

将一个方法调用同一个方法主体连接到一起就称为"绑定"(Binding).若在程序运行以前执行绑定(由编译器和链接程序,如果有的话),就叫作"早期绑定".大家以前或许从未听说过这个术语,因为它在任何程序化语言里都是不可能的.C编译器只有一种方法调用,那就是"早期绑定". 上述程序最令人迷惑不解的地方全与早期绑定有关,因为在只有一个Instrument句柄的前提下,编译器不知道具体该调用哪个方法. 解决的方法就是"后期绑定",它意

Java编程那些事儿54—方法调用

7.4 方法调用 方法声明是创建一个新的功能,声明出来的方法在需要的时候可以通过调用执行该方法的功能,方法只有被调用才能被执行. 在Java程序中有一个基本的main方法,其方法声明如下: public static void main(String[] args) 该方法包含在开始的代码框架中,这是一个特殊的方法.Java语法规定,J2SE的代码都从该方法开始执行,如果一个代码中没有main方法,则该代码不能被直接运行.所以main方法也称作J2SE程序的入口方法,在运行程序时,自动调用对应代