A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵太云 中级黑马   /  2013-8-11 20:28  /  1340 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赵太云 于 2013-8-11 20:33 编辑

       最近,看到反射时被突如其来的的想法给迷惑了!!!{:soso_e153:}
       为什么在反射中有的需要传入Class对象,而有的只需要传入具体要求的参数!
       比如(还有很多方法):

[size=-1] Method
getDeclaredMethod(String name, Class<?>... parameterTypes)


[size=-1] Field
getDeclaredField(String name)  

[size=-1] Constructor<T>
getDeclaredConstructor(Class<?>... parameterTypes)

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 淡定

查看全部评分

3 个回复

倒序浏览
让我们看下JDK中的解释:
public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)

返回一个 Constructor 对象,该对象反映此 Class 对象所表示的类或接口的指定构造方法。parameterTypes 参数是 Class 对象的一个数组,它按声明顺序标识构造方法的形参类型。 如果此 Class 对象表示非静态上下文中声明的内部类,则形参类型作为第一个参数包括显示封闭的实例。
  1. package com.sergio.study;

  2. import java.lang.reflect.Constructor;


  3. /**
  4. * @ClassName: GetMethod
  5. * @Description: TODO(这里用一句话描述这个类的作用)
  6. * @author Sergio Han
  7. * @date 2013-8-11 下午10:56:54
  8. *
  9. */

  10. public class GetMethod {
  11.        
  12.         public static void main(String[] args) throws NoSuchMethodException, SecurityException {
  13.                
  14.                 //创建getclass类的对象
  15.                 GetClass gm = new GetClass();
  16.                 //获取gm对象的class属性
  17.                 Class c = gm.getClass();
  18.                
  19.                 //创建一个Class类型的数组
  20.                 Class[] arg = new Class[1];
  21.                 //设置数组的第一个元素值为String类的值
  22.                 arg[0] = String.class;
  23.                 //获取只有一个的参数的构造方法
  24.                 Constructor strCom = c.getDeclaredConstructor(arg);
  25.                
  26.                 System.out.println("构造方法" + strCom.toString());
  27.                
  28.                 //如上所示,获取有两个参数的构造方法
  29.                 Class[] strs = new Class[2];
  30.                 strs[0] = String.class;
  31.                 strs[1] = Integer.class;
  32.                
  33.                 Constructor strcon = c.getDeclaredConstructor(strs);
  34.                
  35.                 System.out.println("带参数的构造方法" + strcon.toString());
  36.                
  37.         }
  38. }

  39. //定义一个GetClass类,创建带参数和不带参数的构造放,创建两个成员变量
  40. class GetClass{
  41.         private String str = "hello";
  42.         private Integer i = new Integer(1);
  43.        
  44.         public GetClass() {
  45.                
  46.         }
  47.        
  48.         public GetClass(String str)
  49.         {
  50.                 this.str = str;
  51.         }
  52.        
  53.         public GetClass(String str, Integer i)
  54.         {
  55.                 this.str = str;
  56.                 this.i = i;
  57.         }       
  58. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 很给力!

查看全部评分

回复 使用道具 举报
sergio 发表于 2013-8-11 23:24
让我们看下JDK中的解释:
public Constructor getDeclaredConstructor(Class... parameterTypes)

很给力。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马