gpt4 book ai didi

Java反射适当性

转载 作者:搜寻专家 更新时间:2023-10-31 20:16:12 24 4
gpt4 key购买 nike

这可能是一个相当主观的问题,但也可能不是。我的应用程序包含一堆在不同时间显示给用户的表单。每种形式都是它自己的一个类。通常,用户单击一个按钮,启动一个新表单。

我有一个构建这些按钮的便捷函数,你可以这样调用它:

buildButton( "button text", new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent e ) {
showForm( new TasksForm( args... ) );
}
} );

我这样做了几十次,每次都必须制作一个 SelectionAdapter 真的很麻烦。

我真正需要让按钮知道的是单击它时要实例化什么类以及为构造函数提供什么参数,所以我构建了一个我这样调用的函数:

buildButton( "button text", TasksForm.class, args... );

其中 args 是可用于正常实例化 TasksForm 的任意对象列表。

它使用反射从类中获取构造函数,匹配参数列表,并在需要时构建实例。大多数时候我根本不需要将任何参数传递给构造函数。缺点显然是,如果我传递了一组错误的参数,它无法在编译时检测到,因此如果失败,则会在运行时显示一个对话框。但它通常不会失败,如果失败也很容易调试。

我认为这更简洁,因为我来自使用函数和类文字非常普遍的语言。但是,如果您是一名普通的 Java 程序员,看到这会吓到您,还是您会庆幸不必扫描无数的 SelectionAdapter?

最佳答案

是的,反射通常不受欢迎,但在某些情况下它可能非常有用。我会很高兴阅读我可以很快消化的代码,而无需经历无数的小事。

关于Java反射适当性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2841317/

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