clazz.getMethod()
时间: 2023-06-21 12:13:01 浏览: 56
`clazz.getMethod()`是Java反射机制中的一个方法,用于获取指定类中的方法。它需要传入两个参数:方法名和参数类型列表。例如,以下代码可以获取名为"myMethod",参数类型为int和String的方法:
```java
Class<?> clazz = MyClass.class;
Method method = clazz.getMethod("myMethod", int.class, String.class);
```
注意,如果该类中有多个同名的方法,需要通过参数类型列表来明确获取哪一个方法。如果未找到指定的方法,则会抛出NoSuchMethodException异常。
相关问题
访问setName方法报错,怎么改正 Constructor constructor = clazz.getConstructor(); Object o = constructor.newInstance(); Method setName = clazz.getMethod("setName",clazz); setName.invoke(o,"小猫"); System.out.println(o);
这段代码中,第三行的 `clazz.getMethod("setName",clazz)` 中,第二个参数应该是 `String.class`,而不是 `clazz`,因为 `setName` 方法的参数类型是 `String` 而不是 `Class`。
修改后的代码如下所示:
```
Constructor constructor = clazz.getConstructor();
Object o = constructor.newInstance();
Method setName = clazz.getMethod("setName", String.class);
setName.invoke(o, "小猫");
System.out.println(o);
```
这样就可以正确地调用 `setName` 方法并为对象设置名字了。
访问setName方法报错,怎么改正 Constructor constructor = clazz.getConstructor(); Object o = constructor.newInstance(); Method setName = clazz.getMethod("setName",clazz); setName.invoke(0,"小猫"); System.out.println(o);
在这段代码中,第四行 `setName.invoke(0,"小猫");` 中的第一个参数应该是实例对象,而不是整数。因此,你需要将第三行中的 `Object o` 赋值给第四行的第一个参数。修改后的代码如下所示:
```
Constructor constructor = clazz.getConstructor();
Object o = constructor.newInstance();
Method setName = clazz.getMethod("setName", clazz);
setName.invoke(o, "小猫");
System.out.println(o);
```
这样就可以正确地调用 `setName` 方法并为对象设置名字了。