Method 提供关于类或接口上单独某个方法(以及如何访问该方法)的信息。所反映的方法可能是类方法或实例方法(包括抽象方法)。
Method 允许在匹配要调用的实参与底层方法的形参时进行扩展转换;但如果要进行收缩转换,则会抛出 IllegalArgumentException。
这个类是反射中的一个重要方法,主要是用于在获得某个类的字节码后获得其类的所有方法。
用法很简单:
看懂我写这些个代码,基础的用法你就懂了。。。。- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- public class MethodTest {
- public static void main(String[] args) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
- // TODO Auto-generated method stub
- Class stringClass = String.class;
-
- Method[] stringMethod = stringClass.getMethods();//获得string类的所有方法
- StringBuilder sb = new StringBuilder();
- for(int i=0;i<stringMethod.length;i++){
- sb.delete(0, sb.length());
- sb.append(stringMethod[i].getName());//获得方法的名字
- //System.out.println(sb.append(stringMethod[i].getName()));遍历打印所有方法。
- Class[] type = stringMethod[i].getParameterTypes();//获取每个方法的形参
- //构造所有方法的显示方式
- sb.append("(");
- if(type.length>=1){
- for(int j=0;j<type.length;j++){
- sb.append(type[j].getName()+",");
- }
- }
- sb.append(")");
- if(type.length>=1){
- sb.delete(sb.length()-2, sb.length()-1);
- }
- System.out.println(sb);//以此打印所有的method
- }
-
- Method cAt = stringClass.getMethod("charAt", int.class);//查找某个固定的方法
- char m = (char)cAt.invoke("abcde", 2);//对对象一个string对象“abcde”使用cAt这个方法。传入参数2,获得一个字符m
- System.out.println(m);//打印m
- }
- }
复制代码 |