-
如果类里有重载或不定长度参数的方法如何进行对方法的反射?5
如果类里有重载的方法如何进行对方法的反射?
如题:
比如说:package com.tom.blog.monicc.test.reflect public class TestDao{ public void printTest(){ System.out.println("test"); } public void printTest(String[] strings){ System.out.println("test"); for(String str : strings){ System.out.println("str[]: " + str); } } }
那么我要通过反射使用printTest(String[] strings)方法要怎样才可以,我现在是无论怎么只是找到那个无参数的方法。
还有另外的一种情况,在我们的Dao类里有很多的用了5.0以后出现的不定长度参数,像是:
... public void printTest(String... strings){ System.out.println("test"); for(String str : strings){ System.out.println("str[]: " + str); } } ...
那么请问一下在这种情况下怎么才能得到这个方法?我用反射的话总是NoSuchMethodException。
他总找的是printTest()这个方法。
我在网上查不到相关的信息,希望有人能指点一下,谢谢!2008年7月23日 11:28
4个答案 按时间排序 按投票排序
-
采纳的答案
public class Test { public void methodOne(String... args) { System.out.println("1"); } public void methodOne(String arg) { System.out.println("2"); } public void methodTwo(String[] args) { System.out.println("3"); } public static void main(String[] args) throws Exception { Test test = new Test(); Method method1 = Test.class.getMethod("methodOne", new Class[] { String[].class }); method1.invoke(test, new Object[] { new String[] { "s" } }); Method method2 = Test.class.getMethod("methodOne", new Class[] { String.class }); method2.invoke(test, new Object[] {"s"}); Method method3 = Test.class.getMethod("methodTwo", new Class[] { String[].class }); method3.invoke(test, new Object[] { new String[] { "s" } }); } }
2008年7月23日 18:49
-
public class Test { public void methodOne(String... args) { System.out.println("1"); } public void methodTwo(String[] args) { System.out.println("2"); } public static void main(String[] args) throws Exception { Test test = new Test(); Method method2 = Test.class.getMethod("methodOne", new Class[] { String[].class }); method2.invoke(test, new Object[] { new String[] { "s" } }); Method method = Test.class.getMethod("methodTwo", new Class[] { String[].class }); method.invoke(test, new Object[] { new String[] { "s" } }); } }
2008年7月23日 18:47
相关推荐
如果方法有重载,我们需要提供精确的参数类型来获取正确的方法。 例如,如果我们想获取名为`myMethod`,参数类型为`String`的方法,可以这样写: ```java Method method = clazz.getMethod("myMethod", String....
在编程领域,类继承和方法重载是面向对象编程中的两个关键概念,它们极大地提高了代码的复用性和灵活性。在这个名为"practise"的压缩包文件中,我们可能找到一个关于这两个概念的实际应用示例。 首先,让我们深入...
方法的定义和方法的重载是 Java 编程语言的基础知识,本文将对 Java 方法的定义和方法的重载进行详细的介绍。 一、Java 方法的定义 Java 方法是解决问题的多行代码的集合,给予一个名字,以便多次使用。方法的作用...
这里,我们可能会有一个函数或方法,它接受三个边长作为输入,然后检查是否满足任意两边之和大于第三边的三角形条件。如果满足,返回true,否则返回false。 构成三角形的条件是任意两边之和必须大于第三边。这个...
1. **范围**:方法重载发生在同一类内部,而方法重写发生在继承的上下文中,即子类对父类方法的改变。 2. **参数列表**:重载必须有不同参数列表,而重写要求参数列表完全一致。 3. **返回类型**:重载不关注返回...
方法重载是指在同一类中定义多个同名方法,但这些方法的参数列表不同(包括参数的数量、类型或顺序)。编译器会根据传递给方法的参数自动选择最合适的方法版本。这使得我们可以为同一个操作提供多种不同的实现方式,...
如果`myMethod`有多个重载版本,我们需要提供所有参数类型的Class对象来精确匹配。 对于"不同的返回值类型",Java反射API并不直接支持根据返回值类型来查找方法。通常,我们先根据方法名和参数类型找到可能匹配的...
方法重载的要求是:在同一个类中,方法名必须相同,而参数列表不同。注意,方法的重载与返回值和访问修饰符没有关系。 方法重载的优点是可以提高代码的复用性和可读性。例如,在 driver 类中,驾驶员可以驾驶汽车、...
在方法重写中,子类可以对父类的方法进行修改或扩充,但不能修改父类的方法的参数列表。 方法重写的规则有三个: 1. 参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载。 2. 返回的类型必须一直...
### Java编程那些事儿55—方法重载和参数传递 #### 方法重载(Overloading) 在Java编程语言中,**方法重载**(Overloading)是一个非常重要的概念,它允许我们定义多个具有相同名称但参数列表不同的方法。这种方法...
JavaScript 作为一种动态类型语言,与静态类型的编程语言如Java或C#不同,它不支持原生的方法重载。然而,由于其灵活性,我们可以通过一些技巧来模拟实现方法重载的效果。这里我们将详细讨论如何在JavaScript中实现...
Java方法重载是面向对象编程中的一个重要概念,它允许在一个类中定义多个具有相同名称但参数列表不同的方法。这样做的好处在于,通过方法名就可以直观地理解方法的功能,而具体的执行逻辑则由传入的参数类型和数量...
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。 在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。 但有时子类并不想原封不动地继承父类的方法,...
如果子类没有对父类的方法进行覆盖,则子类可以直接调用这些继承而来的方法。下面通过几个方面来详细介绍方法继承: 1. **可见性修饰符**: 当子类`SubBase`继承自父类`Base`时,父类中的所有`public`和`protected`...
在这个例子中,虽然两个`Write`方法都具有相同的名称,但是它们的参数数量不同,第一个方法有两个参数,而第二个方法有三个参数。因此,这两个方法构成了方法重载。 ##### 示例2:参数类型不同 ```csharp public ...
在Java中,如果一个类中有两个或更多的方法拥有相同的名称,但它们的参数列表不同(参数数量、类型或者顺序不同),那么这些方法就是重载的。Java虚拟机(JVM)会根据传入参数的类型和数量来选择调用哪个重载方法,...
在C#编程中,`MessageBox.Show`方法是一个非常常见的用户交互工具,用于向用户显示简单的信息、警告或确认对话框。这个方法具有多种重载形式,使得开发者可以根据实际需求定制对话框的显示内容和样式。下面我们将...
接着,方法重载(Overloading)是面向对象编程中的一个重要特性,它允许在同一个类中定义多个同名方法,但这些方法的参数列表必须不同(参数数量、类型或顺序差异)。Java虚拟机(JVM)根据传入的参数来决定调用哪个...
Java 中的方法重载是指在同一个类中可以定义多个具有相同名称的方法,但是这些方法的参数列表不同,包括参数的数量、参数的数据类型、参数的顺序等。方法重载是 Java 中的一种多态性,它允许开发者编写更加灵活和...
#### 什么是函数重载? 函数重载允许在同一个作用域中定义多个同名函数,但这些函数的参数列表必须有所不同。这使得程序设计更加灵活且易于理解,因为程序员可以使用相同的名字来表示相似功能的不同实现方式。 ####...