public class ClassDemo2 {
public static void main(String [] args){
Class c1=int.class; //int的类类型
Class c2=String.class; //String类的类类型 String的字节码
Class c3=double.class;
Class c4=Double.class; //c3和c4不一样
Class c5=void.class;
System.out.println(c1.getName());
System.out.println(c2.getName());
System.out.println(c2.getSimpleName());//不含包名的类类型
System.out.println(c5.getName());
}
}
package JAVA_Reflect;
import java.lang.reflect.Method;
public class ClassUtil {
/**
* 打印类的信息,包括类的成员函数,成员变量
* @param obj 该对象所属类的信息
*/
public static void printClassMessage(Object obj){
//要获取类的信息,首先要获取类的类类型
Class c=obj.getClass(); //传递的是哪个子类的对象,c就是该子类的类类型
//获取类的名称
System.out.println("类的名称是:"+c.getName());
/*
Method类,方法对象
一个成员方法就是一个Method对象
GetMethods方法获取的是所有的public的函数,包括父类继承而来的
*/
Method [] ms=c.getMethods();
//c.getDeclaredMethods(); 获取自己的public函数,不包括父类的
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(")");
}
}
}
public class ClassDemo3 {
public static void main(String [] args){
String s="hello";
ClassUtil.printClassMessage(s);
}
}
输出:
"C:\Program Files\Java\jdk-9\bin\java" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2017.2.5\lib\idea_rt.jar=56678:C:\Program Files\JetBrains\IntelliJ IDEA 2017.2.5\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\cpxiaozu-2\IdeaProjects\JavaStudyCodings\out\production\JavaStudyCodings;C:\Program Files\JetBrains\IntelliJ IDEA 2017.2.5\lib\junit-4.12.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2017.2.5\lib\hamcrest-core-1.3.jar;C:\Users\cpxiaozu-2\Downloads\lib\dom4j-1.6.1.jar" JAVA_Reflect.ClassDemo3
类的名称是:java.lang.String
boolean equals(java.lang.Object,)
int length()
java.lang.String toString()
int hashCode()
void getChars(int,int,[C,int,)
int compareTo(java.lang.Object,)
int compareTo(java.lang.String,)
int indexOf(int,)
int indexOf(java.lang.String,)
int indexOf(java.lang.String,int,)
int indexOf(int,int,)
java.lang.String valueOf(int,)
java.lang.String valueOf(char,)
java.lang.String valueOf(boolean,)
java.lang.String valueOf(float,)
java.lang.String valueOf(double,)
java.lang.String valueOf(java.lang.Object,)
java.lang.String valueOf(long,)
java.lang.String valueOf([C,)
java.lang.String valueOf([C,int,int,)
java.util.stream.IntStream codePoints()
boolean isEmpty()
char charAt(int,)
int codePointAt(int,)
int codePointBefore(int,)
int codePointCount(int,int,)
int offsetByCodePoints(int,int,)
[B getBytes(java.nio.charset.Charset,)
[B getBytes()
[B getBytes(java.lang.String,)
void getBytes(int,int,[B,int,)
boolean contentEquals(java.lang.CharSequence,)
boolean contentEquals(java.lang.StringBuffer,)
boolean equalsIgnoreCase(java.lang.String,)
int compareToIgnoreCase(java.lang.String,)
boolean regionMatches(int,java.lang.String,int,int,)
boolean regionMatches(boolean,int,java.lang.String,int,int,)
boolean startsWith(java.lang.String,)
boolean startsWith(java.lang.String,int,)
boolean endsWith(java.lang.String,)
int lastIndexOf(java.lang.String,int,)
int lastIndexOf(java.lang.String,)
int lastIndexOf(int,int,)
int lastIndexOf(int,)
java.lang.String substring(int,int,)
java.lang.String substring(int,)
java.lang.CharSequence subSequence(int,int,)
java.lang.String concat(java.lang.String,)
java.lang.String replace(java.lang.CharSequence,java.lang.CharSequence,)
java.lang.String replace(char,char,)
boolean matches(java.lang.String,)
boolean contains(java.lang.CharSequence,)
java.lang.String replaceFirst(java.lang.String,java.lang.String,)
java.lang.String replaceAll(java.lang.String,java.lang.String,)
[Ljava.lang.String; split(java.lang.String,)
[Ljava.lang.String; split(java.lang.String,int,)
java.lang.String join(java.lang.CharSequence,[Ljava.lang.CharSequence;,)
java.lang.String join(java.lang.CharSequence,java.lang.Iterable,)
java.lang.String toLowerCase(java.util.Locale,)
java.lang.String toLowerCase()
java.lang.String toUpperCase(java.util.Locale,)
java.lang.String toUpperCase()
java.lang.String trim()
java.util.stream.IntStream chars()
[C toCharArray()
java.lang.String format(java.util.Locale,java.lang.String,[Ljava.lang.Object;,)
java.lang.String format(java.lang.String,[Ljava.lang.Object;,)
java.lang.String copyValueOf([C,)
java.lang.String copyValueOf([C,int,int,)
java.lang.String intern()
void wait(long,int,)
void wait()
void wait(long,)
java.lang.Class getClass()
void notify()
void notifyAll()
Process finished with exit code 0