Java的反射机制---动态调用对象的简单方法_java

唉!我还真是在面试中学习新东东啊,一个公司刚刚给了个测试,不过我很奇怪的是为什么web developer的职位居然考java的反射机制题,不过学习研究一下反射机制对我来说是件好事啦!

先说说什么是java反射机制吧,在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这 种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。主要功能:在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对 象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。

然后再留个示例吧。

package com.beidou.test;
import java.lang.reflect.Method;

public class Dynamic {
  public static void main(String[] args) throws Exception{
  Class c = Dynamic.class;//得到对象
  Method[] methods = c.getDeclaredMethods();//得到方法

  for(Method method : methods){
   System.out.print(method.getName());//打印参数名
   Class[] parameterTypes = method.getParameterTypes();
   for(int i=0;i<parameterTypes.length;i++){
     String nameString=parameterTypes[i].getName();
     System.out.print("parameterType:"+nameString);//打印方法参数类型
   }

   System.out.print("ReturnType:"+method.getReturnType());
     System.out.println();
   }

   Object obj=c.newInstance();//获取到方法对象,假设方法的参数是一个int,String,method名为getAge
   Method sAge = c.getMethod("getAge", new Class[] {int.class,String.class});
   //获得参数Object
    Object[] arguments = new Object[]{new Integer(23),new String("abc")};
   //执行方法
   String s=(String)sAge.invoke(obj , arguments);
   System.out.print(s);
   }

   public String getAge(int age,String name){
      return name+": "+age;
   }
}

以上这篇Java的反射机制---动态调用对象的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java反射机制
java反射机制调用方法、java反射机制创建对象、java简单的反射机制、java反射机制、反射机制,以便于您获取更多的相关知识。

时间: 2024-09-12 13:36:17

Java的反射机制---动态调用对象的简单方法_java的相关文章

Java通过反射机制动态设置对象属性值的方法_java

/** * MethodName: getReflection<br> * Description:解析respXML 在通过反射设置对象属性值 * User: liqijing * Date:2015-7-19下午12:42:55 * @param clzzName * @param respXML * @return * @throws ClassNotFoundException * @throws DocumentException * @throws IllegalArgumentE

通过java反射机制动态调用某方法的总结(推荐)_java

如下: public Object invokeMethod(String className, String methodName, Object[] args) throws Exception{ Class ownerClass = Class.forName(className); Object owner = ownerClass.newInstance(); Class[] argsClass = new Class[args.length]; for (int i = 0, j =

利用java反射机制实现自动调用类的简单方法_java

1. 新建TestServlet类 package com.yanek.test; import java.io.IOException; import java.lang.reflect.Method; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.ht

java 利用java反射机制动态加载类的简单实现_java

如下所示: ////////////////// Load.java package org.bromon.reflect; import java.util.ArrayList; import java.util.List; public class Load implements Operator { @Override public List<?> act(List<?> params) { // TODO Auto-generated method stub List<

如何通过java反射机制动态获得方法名

问题描述 AllBOClient xf = new AllBOClient(pb.getWsdlurl());AllBOPortType bo = xf.getAllBOHttpPort();bo.notice2Province(a[1],a[0]);在数据库中存有notice2province的值,怎样运用反射机制动态获得notice2province的值?问题补充:从数据库读出值来替换notice2Province问题补充:congjl2002的答案似乎还少了一步,我还需要向得到的方法中传入

简单总结Java的反射机制的运用_java

Java 的反射机制是使其具有动态特性的非常关键的一种机制,也是在JavaBean 中广泛应用的一种特性. 简单来说,一个类或者一个对象是拥有下面几种属性的: Method,Constructor,Field,其大致结构类图如下: 我们现在用代码来说明问题: 首先,我们看Class类,在Class类中,我们可以看见下面的几个重要的方法: getInterfaces() getSuperClass(); isInterface(); 这是用来得到一个类的接口或者超类,以及判断这个类是不是一个接口:

java的反射机制的问题

问题描述 java的反射机制的问题 111111111111111111111111111111111111111111111 解决方案 反射机制,好像是这样子,在public类里我创建了一个接口,可惜,我都不知道我什么时候用它,所以我就不初始化它了,突然有一天,我要初始化他一次,于是我就用反射机制来给它初始化一下.不知道对不对? 解决方案二: java反射机制及性能优化问题Java进阶(六)Java反射机制可恶问题NoSuchFieldExceptionJAVA中的反射机制 解决方案三: 这个

remopte script文档(转载自微软)&amp;lt;八&amp;gt;调用对象属性和方法

文档: 调用对象属性和方法当您调用一个服务器方法时,该方法不返回单个值.而是创建一个调用对象,该对象包含被调用过程的返回值和状态信息.下表列出了调用对象的属性.属性 描述 id 调用的唯一标识号,它是首次调用时产生的.return_value 方法的返回值──如果有的话.data 产生 remote scripting 调用时,服务器返回的粗数据,是以 XML 标记封装的.有关详细信息,请参阅检查错误.status 指示方法调用当前状态的值.可能值包括:-1     失败0     完成1   

数据库-java中什么类,什么对象,什么方法,什么语句读取sql表文件的数据的

问题描述 java中什么类,什么对象,什么方法,什么语句读取sql表文件的数据的 java中什么类,什么对象,什么方法,什么语句读取sql表文件的数据的 解决方案 Statement或者preparedStatement类对应的实体对象,使用executeUpdate方法执行sql语句的查询操作.executeUpdate方法执行其他sql操作 解决方案二: http://blog.csdn.net/csh624366188/article/details/7305672/ 解决方案三: 这三个