gpt4 book ai didi

Java - 检查方法是否存在而不是 NoSuchMethodException

转载 作者:行者123 更新时间:2023-12-02 01:28:49 29 4
gpt4 key购买 nike

在我的代码中有一个方法应该调用对象的方法doSomething。首先,不知道对象的类是否具有公共(public)方法。到目前为止,我使用了以下代码:

try {
Method method = component.getClass().getMethod("doSomething", Boolean.TYPE);
method.invoke(component, true);
} catch (final NoSuchMethodException e) {
// do nothing as for some components the method "doSomething" simply does not exist
}

我现在想知道是否应该通过检查对象的类是否具有公共(public)方法doSomething来尝试避免NoSuchMethodException

final Method method = Arrays.stream(component.getClass().getMethods())
.filter(m -> m.getName().equals("doSomething")).findFirst().orElse(null);
if (method != null) {
method.invoke(component, true);
}

你认为什么更好?

最佳答案

真正的问题是这里是否真的有必要进行反射(reflection)。学习很酷的技巧和了解反射对于开发人员来说是很棒而且很重要的,它可以帮助你理解很多东西。但它并不总是正确的解决方案。也许你应该在界面中有类似的东西。

公共(public)接口(interface)DoingSometing {
SomeReturnObject doSomething( boolean 参数);
}

并且组件应该实现该接口(interface),在最坏的情况下,您将必须进行强制转换以避免反射,并且如果您拥有该对象,您可能会遇到 ClassCastException

关于Java - 检查方法是否存在而不是 NoSuchMethodException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56439219/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com