java反射:數據類型及返回值對應的類類型以及Class類的基本API

    前面我們學會了如何獲取一個類的類類型,那麼基本的數據類型或者方法返回值是否也存在類類型呢?答案是肯定的,我們來看看怎麼表示一個基本數據類型以及函數返回值的類類型:

    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類的名稱以及包含的方法的信息都獲取到了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章