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

本文介绍了如何在Java中获取基本数据类型及函数返回值的类类型,并通过示例展示了如何使用Class类API来获取类的基本信息,如成员方法及其返回值类型等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

    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类的名称以及包含的方法的信息都获取到了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值