
2
3import javalangreflectMethod;
4import javalangreflectParameterizedType;
5import javalangreflectType;
6import javautilList;
7import javautilMap;
8
9publicclass TempTest {
10
11publicstaticvoid main(String[] args) throws Exception {
12 Method[] methods = TempTestclassgetDeclaredMethods();
13for (Method method : methods) {
14 Systemoutprintln("method:"+ methodgetName());// 方法名
15
16////////////////方法的参数
17 Systemoutprintln(" paramTypeType: ");
18 Type[] paramTypeList = methodgetGenericParameterTypes();// 方法的参数列表
19for (Type paramType : paramTypeList) {
20 Systemoutprintln(""+ paramType);// 参数类型
21if (paramType instanceof ParameterizedType)/// 如果是泛型类型 /{
22 Type[] types = ((ParameterizedType) paramType)
23 getActualTypeArguments();// 泛型类型列表
24 Systemoutprintln(" TypeArgument: ");
25for (Type type : types) {
26 Systemoutprintln(""+ type);
27 }
28 }
29 }
30
31////////////////方法的返回值
32 Systemoutprintln(" returnType: ");
33 Type returnType = methodgetGenericReturnType();// 返回类型
34 Systemoutprintln(""+ returnType);
35if (returnType instanceof ParameterizedType)/// 如果是泛型类型 /{
36 Type[] types = ((ParameterizedType) returnType)
37 getActualTypeArguments();// 泛型类型列表
38 Systemoutprintln(" TypeArgument: ");
39for (Type type : types) {
40 Systemoutprintln(""+ type);
41 }
42 }
43
44 }
45
46 }
47
48publicstatic String method1(List list) {
49returnnull;
50 }
51
52privatestatic Map<String, Double> method2(Map<String, Object> map) {
53returnnull;
54 }
55
56}
很简单哟,但首先明确一点,java并没有提供方法可以直接返回引用名称的,我们只能自己实现,方法如下:
1、类中定义一个私有String类型的 instanceName 字段,并写get方法;
2、在构造方法中使用有参构造为其赋值;
3、new对象时传入引用名称;
3、使用的地方直接调用get方法即可返回改引用名称;
public static void printMethods(Class cl)
{
Method[] methods =clgetDeclaredMethods();//返回一个包含方法对象的数组
for(Method m : methods)//循环该类的每个方法
{
Class retType = mgetReturnType();//该方法的返回类型,
Sting name = mgetName();//获得方法名
Systenoutprint(" "+ModifiertoString(mgetModifiers());打印方法修饰符
Systemoutprint(" "+retTypegetName() + " " + name +"(");
Class[] paramTypes = mgetParameterTypes();//获得一个方法参数数组(getparameterTypes用于返回一个描述参数类型的Class对象数组)
for(int j = 0 ; j < paramTypeslength ; j++)
{
if ( j > 0 ) Systemoutprint(" , "); //如果有多个参数,中间则用逗号隔开,否则直接打印参数
Systemoutprint (paramTypes[ j ]getName);
}
Systemoutprintln (" );");
}}
//////////getparameterTypes方法用于返回一个描述参数类型的Class对象数组)
public void method(TblFwlx obj) {
Class clazz = objgetClass();
Field[] fields = objgetClass()getDeclaredFields();//获得属性
for (Field field : fields) {
PropertyDescriptor pd = new PropertyDescriptor(fieldgetName(),
clazz);
Method getMethod = pdgetReadMethod();//获得get方法
Object o = getMethodinvoke(obj);//执行get方法返回一个Object
}
}
以上就是关于java反射如何根据方法返回类型来接收方法的返回值可以获取到方法名,返回值类型。全部的内容,包括:java反射如何根据方法返回类型来接收方法的返回值可以获取到方法名,返回值类型。、java 中怎么获得对象引用的名称、java反射获得方法名后怎样判断方法是否含有参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)