目录
理论
java中万事万物都是对象,某一个类的方法,也是对象,所以对象中的一个方法也是一个对象,所以后期才会有注解,方便开发者的编程。
演示
整体项目结构如下:
演示获取基本数据!
源码如下:
GenericData.java
package my;
public class GenericData {
@SuppressWarnings("rawtypes")
public static void main(String[] args) {
Class c1 = int.class;
Class c2 = String.class;
Class c3 = double.class;
Class c4 = Double.class;
Class c5 = void.class;
Class c6 = double.class.getClass();
Class c7 = double.class.getClass().getClass();
System.out.println(c1.getName());
System.out.println(c2.getName());
System.out.println(c3.getName());
System.out.println(c4.getName());
System.out.println(c5.getName());
System.out.println();
System.out.println(c6.getName());
System.out.println(c7.getName());
}
}
运行截图如下:
其中:
Class c1 = int.class; 为int的类类型
Class c2 = String.class; String类型的类型
Class c3 = double.class; double.class为double数据类型的类型
Class c4 = Double.class; Double.class为Double类类型
Class c5 = void.class;
Class c6 = double.class.getClass(); double数据类型的类型的类型
Class c7 = double.class.getClass().getClass(); 最后还是回到了Class类型
演示二:获取类方法名
ClassUtil.java
package my;
import java.lang.reflect.Method;
public class ClassUtil {
/**
* 打印类的信息,包括成员函数、成员变量
*
*/
public static void printClassMessage(Object obj) {
Class c = obj.getClass();
//获取类名
System.out.println("类的名称是:" + c.getName());
//获取方法
Method[] ms = c.getMethods();
for(int i = 0; i < ms.length; i++) {
//获取方法返回值类型
Class returnType = ms[i].getReturnType();
System.out.print(returnType.getName() + " ");
//得到方法的名称
System.out.print(ms[i].getName() + "(");
//获取参数类型
Class[] paramTypes = ms[i].getParameterTypes();
for(Class class1 : paramTypes) {
System.out.print(class1.getName() + ",");
}
System.out.println(")");
}
}
}
MethodData.java
package my;
public class MethodData {
public static void main(String[] args) {
String s = "Hello";
ClassUtil.printClassMessage(s);
}
}
运行截图如下:
这里只要注意这几点:
getMethods()是获取所有public的函数,包括父类的;
getDeclaredMethods()获取自己声明的