取得方法
反射最大的用处(几乎所有的开发中),就是针对于方法的操作。
在反射机制中,普通方法可以在保存用户状态的情况下进行各种操作。
Class类中取得方法的操作
1. 取得全部方法(返回Method[] n)
public Method[] getMethods()
2. 取得指定方法
两者都是返回 java.lang.reflect.Method类型
在Method类中定义了如下操作方法:
·取得方法名字
String getName()
·取得方法修饰符(int)
·取得方法的参数类型
public Class<?>[] getParameterTypes();
·调用指定的方法
public Object invoke(Object obj, Object... args);
//obj:任何方法调用时都必须有实例化对象,而后再设置参数args
·获取返回值类型
public Class<?> getReturnType();
整个Method类中最重要的方法是 invoke(),可以反射调用方法
反射调用
一个类必须在有一个实例化对象 的情况下才能调用类中的普通方法
关键字new调用普通方法的缺点
·代码结构严谨
·关键字new
·明确指定了一个类的对象
反射调用代码:
Class<?> cls = Class.forName("Dept");
Object obj = cls.newInstance();
Method metA = cls.getMethod("setDname",String.class)
Method metB = cls.getMethod("getDname");
metA.invoke(obj, "测试部");
System.out.println(metB.invoke(obj));
编写StringUtils
public class StringUtils{
public static String initcap(String str){
if(str==null||"".equals(str)){
return str;
}
if(str.length==1){ //只有一位数据,全部变大写
return str.toUpperCase();
}else{
return str.substring(0,1).toUpperCase() + str.substring(1);
}
}
}