java反射:数据类型及返回值对应的类类型以及Class类的基本API

xiaoxiao2021-02-28  10

    前面我们学会了如何获取一个类的类类型,那么基本的数据类型或者方法返回值是否也存在类类型呢?答案是肯定的,我们来看看怎么表示一个基本数据类型以及函数返回值的类类型:

Class c=int.class;//int的类类型 Class c2=String.class;//String类的类类型 Class c3=double.class; Class c4=Double.class;//不同于上面double的类类型,这是double基本数据类型对应的包装类的类类型 Class c5=void.class;//函数返回值的类类型 System.out.println(c.getName()); System.out.println(c2.getName()); System.out.println(c3.getName()); System.out.println(c4.getSimpleName());//不包含包名 System.out.println(c5.getName()); }

运行结果如下: int java.lang.String double Double void     我们如何获取一个类的基本信息呢?接下来我们来看看Class类的基本API:

public static void printClassMessage(Object obj) { /* * 打印类的信息,包括类的成员函数,返回值类型,参数 */ //获取类的类类型 Class c=obj.getClass();//传递的是哪个子类的对象,c就是该子类的类类型 //获取类的名称 System.out.println("类的名称为"+c.getName()); Method[] ms=c.getMethods(); //Method类是方法对象,一个成员方法就是一个Mehtod对象,getMethods()方法获取的是所有public的函数,包括父类继承而来,c.getDeclaredMethods()用于获取该类自己声明的方法,不问访问权限 for(int i=0;i<ms.length;i++) { Class returnType=ms[i].getReturnType();//得到的是返回值类型的类类型 System.out.println(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 static void main(String[] args) { String s="hello"; ClassAPI.printClassMessage(s); Integer n=1; ClassAPI.printClassMessage(n); }

运行结果: 类的名称为java.lang.String boolean equals(java.lang.Object,) java.lang.String toString() int hashCode() int compareTo(java.lang.String,) int compareTo(java.lang.Object,) int indexOf(java.lang.String,int,) int indexOf(java.lang.String,) int indexOf(int,int,) int indexOf(int,) java.lang.String valueOf(int,) java.lang.String valueOf(long,) java.lang.String valueOf(float,) java.lang.String valueOf(boolean,) java.lang.String valueOf([C,) java.lang.String valueOf([C,int,int,) java.lang.String valueOf(java.lang.Object,) java.lang.String valueOf(char,) java.lang.String valueOf(double,) char charAt(int,) int codePointAt(int,) int codePointBefore(int,) int codePointCount(int,int,) int compareToIgnoreCase(java.lang.String,) java.lang.String concat(java.lang.String,) boolean contains(java.lang.CharSequence,) boolean contentEquals(java.lang.CharSequence,) boolean contentEquals(java.lang.StringBuffer,) java.lang.String copyValueOf([C,) java.lang.String copyValueOf([C,int,int,) boolean endsWith(java.lang.String,) boolean equalsIgnoreCase(java.lang.String,) java.lang.String format(java.util.Locale,java.lang.String,[Ljava.lang.Object;,) java.lang.String format(java.lang.String,[Ljava.lang.Object;,) void getBytes(int,int,[B,int,) [B getBytes(java.nio.charset.Charset,) [B getBytes(java.lang.String,) [B getBytes() void getChars(int,int,[C,int,) java.lang.String intern() boolean isEmpty() java.lang.String join(java.lang.CharSequence,[Ljava.lang.CharSequence;,) java.lang.String join(java.lang.CharSequence,java.lang.Iterable,) int lastIndexOf(int,) int lastIndexOf(java.lang.String,) int lastIndexOf(java.lang.String,int,) int lastIndexOf(int,int,) int length() boolean matches(java.lang.String,) int offsetByCodePoints(int,int,) boolean regionMatches(int,java.lang.String,int,int,) boolean regionMatches(boolean,int,java.lang.String,int,int,) java.lang.String replace(char,char,) java.lang.String replace(java.lang.CharSequence,java.lang.CharSequence,) java.lang.String replaceAll(java.lang.String,java.lang.String,) java.lang.String replaceFirst(java.lang.String,java.lang.String,) [Ljava.lang.String; split(java.lang.String,) [Ljava.lang.String; split(java.lang.String,int,) boolean startsWith(java.lang.String,int,) boolean startsWith(java.lang.String,) java.lang.CharSequence subSequence(int,int,) java.lang.String substring(int,) java.lang.String substring(int,int,) [C toCharArray() java.lang.String toLowerCase(java.util.Locale,) java.lang.String toLowerCase() java.lang.String toUpperCase() java.lang.String toUpperCase(java.util.Locale,) java.lang.String trim() void wait() void wait(long,int,) void wait(long,) java.lang.Class getClass() void notify() void notifyAll() java.util.stream.IntStream chars() java.util.stream.IntStream codePoints() 类的名称为java.lang.Integer int numberOfLeadingZeros(int,) int numberOfTrailingZeros(int,) int bitCount(int,) boolean equals(java.lang.Object,) java.lang.String toString(int,int,) java.lang.String toString() java.lang.String toString(int,) int hashCode(int,) int hashCode() int min(int,int,) int max(int,int,) int reverseBytes(int,) int compareTo(java.lang.Integer,) int compareTo(java.lang.Object,) byte byteValue() short shortValue() int intValue() long longValue() float floatValue() double doubleValue() java.lang.Integer valueOf(java.lang.String,int,) java.lang.Integer valueOf(int,) java.lang.Integer valueOf(java.lang.String,) java.lang.String toHexString(int,) int compare(int,int,) java.lang.Integer decode(java.lang.String,) int reverse(int,) int sum(int,int,) int parseInt(java.lang.String,) int parseInt(java.lang.String,int,) long toUnsignedLong(int,) int compareUnsigned(int,int,) int divideUnsigned(int,int,) java.lang.Integer getInteger(java.lang.String,java.lang.Integer,) java.lang.Integer getInteger(java.lang.String,int,) java.lang.Integer getInteger(java.lang.String,) int highestOneBit(int,) int lowestOneBit(int,) int parseUnsignedInt(java.lang.String,) int parseUnsignedInt(java.lang.String,int,) int remainderUnsigned(int,int,) int rotateLeft(int,int,) int rotateRight(int,int,) int signum(int,) java.lang.String toBinaryString(int,) java.lang.String toOctalString(int,) java.lang.String toUnsignedString(int,) java.lang.String toUnsignedString(int,int,) void wait() void wait(long,int,) void wait(long,) java.lang.Class getClass() void notify() void notifyAll()     这样我们就把String类和Integer类的名称以及包含的方法的信息都获取到了

转载请注明原文地址: https://www.6miu.com/read-1650185.html

最新回复(0)