本文介绍了如何告诉方法有一个使用反射的varargs参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下是示例代码

package org.example;

import java.lang.reflect.Method;

class TestRef {

        public void testA(String ... a) {
                for (String i : a) {
                        System.out.println(i);
                }
        }

        public static void main(String[] args){

                Class testRefClass = TestRef.class;

                for (Method m: testRefClass.getMethods()) {
                        if (m.getName() == "testA") {
                                System.out.println(m);
                        }
                }
        }
}

输出

public void org.example.TestRef.testA(java.lang.String[])

因此报告该方法的签名采用String数组。

So the signature of the method is reported to take a array of String.

在反射库中是否有任何意思我可以告诉该方法最初声明采取varargs?

Is there any mean in the reflection library I can tell that the method is originally declared to take a varargs?

推荐答案

是的。 。

Yup. java.lang.reflect.Method.isVarArgs().

但是,如果您尝试以人类可读的形式组装和显示方法签名,则仅可使用此选项。如果需要使用反射调用varargs方法,则必须将varargs参数组装成数组类型的参数。

However, this is only of use if you are trying to assemble and display method signatures in human readable form. If you need to invoke a varargs method using reflection, you will have to assemble the varargs arguments into an array-typed argument.

这篇关于如何告诉方法有一个使用反射的varargs参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-24 21:39