加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java反射的恰当性

发布时间:2020-12-14 19:11:07 所属栏目:Java 来源:网络整理
导读:这可能是一个相当主观的问题,但也许不是. 我的应用程序包含一堆在不同时间向用户显示的表单.每个表单都是自己的一个类.通常,用户单击按钮,该按钮将启动新表单. 我有一个方便的功能来构建这些按钮,你这样称呼它: buildButton( "button text",new SelectionAd

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

我有一个方便的功能来构建这些按钮,你这样称呼它:

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程序员,你会看到这个怪胎,或者你是否会欣赏不必扫描多个SelectionAdapters?

最佳答案
是的,通常反思是不赞成的,但在某些情况下它可能非常有用.我会很感激阅读代码,我可以相当快速地消化,而不必经历无数的小事.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读