1、基本数据类型,某些关键字也有类类型
package testclass;
public class ClassDemo {
public static void main(String[] args) {
Class c1 =int.class;
Class c2 =String.class;
Class c3 =double.class;
Class c4 =short.class;
Class c5 =float.class;
Class c6 =long.class;
Class c7 =Long.class;//包装类的类类型
Class c8 =void.class;//返回类型的类类型
System.out.println(c1.getName());
System.out.println(c2.getName());
System.out.println(c2.getSimpleName());//不包含包名的类名称
System.out.println(c7.getName());
System.out.println(c8.getName());
}
}
如上代码通过基本数据类型等获取类类型,再通过类类型获取类的信息,打印结果如下
除了获取名字之外还可以获取别的信息,例如构造函数信息,方法信息等等。
2、获取类的方法信息
package testclass;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class ClassUtil {
public static void getMethodMsg(Object obj){
//要获取类的信息首先要获取类的类类型
Class clazz = obj.getClass();//传递的是哪个类的对象,clazz就是哪个类的类类型
//获取类的名称
System.out.println(clazz.getName());
//获取类的方法,一个方法就是一个Method对象
//获取类的所有public函数,包括从父类继承的
Method[] methods = clazz.getMethods();
//获取类自己所有的声明的方法,不论是什么访问权限
// methods = clazz.getDeclaredMethods();
for(Method m : methods){
// 权限修饰符
int mo = m.getModifiers();
String priv = Modifier.toString(mo);
//获取方法返回值类型的类类型
Class returnType = m.getReturnType();
//获取方法返回值类型的名称
System.out.print(priv + " "+ returnType.getName()+" ");
//获取方法的名称
System.out.print(m.getName()+"(");
//获得参数类型————获得参数列表类型的类类型
Class[] clazzs =m.getParameterTypes();
for (int i = 0; i < clazzs.length; i++) {
StringBuffer methodName = new StringBuffer(clazzs[i].getName());
if(i<clazzs.length-1){
methodName.append(",");
}
System.out.print(methodName);
}
System.out.println(")");
}
}
public static void main(String[] args) {
String s="hello";
ClassUtil.getMethodMsg(s);
}
}