六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 52|回复: 0

简单的Java反射机制

[复制链接]

升级  90%

11

主题

11

主题

11

主题

童生

Rank: 1

积分
45
 楼主| 发表于 2013-1-26 15:19:12 | 显示全部楼层 |阅读模式
一. 创建一个简单的java类如下:
package cn.zq;

public class SomeClass {

/**
  * 转换成小写
  **/
public void toLower(String s)
{
  System.out.println("toLower方法");
  System.out.println("原字符:"+s);
  System.out.println("转换后:"+s.toLowerCase()) ;

}

/**
  * 转换成大写
  **/
public void toUpper(String s)
{
  System.out.println("toUpper方法");
  System.out.println("原字符:"+s);
  System.out.println("转换后:"+s.toUpperCase()) ;
}
}

二. 创建反射类
package cn.zq;

import java.lang.reflect.InvocationTargetException;

public class TestRefl {

public void test1(String action) throws ClassNotFoundException,
  InstantiationException,
  IllegalAccessException,
  SecurityException,
  NoSuchMethodException,
  IllegalArgumentException,
  InvocationTargetException
{
  Class clazz = Class.forName(action);

  SomeClass c = (SomeClass) clazz.newInstance();

  c.toUpper("ffff");

  c.toLower("AAAA");


}



public static void main(String[] args) throws ClassNotFoundException,
  InstantiationException,
  IllegalAccessException,
  SecurityException,
  NoSuchMethodException,
  IllegalArgumentException,
  InvocationTargetException
{
   TestRefl tr = new TestRefl();
   tr.test1("cn.zq.SomeClass");
}
}
结果如图

反射类也可以写成如下
package cn.zq;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class TestRefl {

public void test1(String action) throws ClassNotFoundException,
  InstantiationException,
  IllegalAccessException,
  SecurityException,
  NoSuchMethodException,
  IllegalArgumentException,
  InvocationTargetException
{
  Class clazz = Class.forName(action);

  SomeClass c = (SomeClass) clazz.newInstance();

  Method m = clazz.getMethod("toLower", new Class[]{String.class});

  m.invoke(c, new Object[]{"STR"});

Method m2 = clazz.getMethod("toUpper", new Class[]{String.class});

  m2.invoke(c, new Object[]{"str"});


}



public static void main(String[] args) throws ClassNotFoundException,
  InstantiationException,
  IllegalAccessException,
  SecurityException,
  NoSuchMethodException,
  IllegalArgumentException,
  InvocationTargetException
{
  TestRefl tr = new TestRefl();
  tr.test1("cn.zq.SomeClass");
}
}
结果如下
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表