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

java – 如何在运行时获取变量名?

发布时间:2020-12-15 08:30:07 所属栏目:Java 来源:网络整理
导读:用例是这样的: public void testMethod(String para1,String para2,String para3){ if(para1==null){ System.out.println("para1 cannot be null"); } if(para2)...} 作为上面的检查空代码,我们将重复编写相同的代码以检查每个参数.但我们不能真正分解出一
用例是这样的:

public void testMethod(String para1,String para2,String para3){


 if(para1==null){
         System.out.println("para1 cannot be null");

   }
 if(para2)...
}

作为上面的检查空代码,我们将重复编写相同的代码以检查每个参数.但我们不能真正分解出一个常见的方法,比如checknull(String para),因为我们需要输出参数的名称,以便用户知道哪一个是错误的.

也许在java中没有办法做到这一点我想.如果我理解正确,方法参数名称应该在编译后消失.

那么,你们通常如何解决这个问题呢?

解决方法

它被放入了信息中.别无他法.不,你不能得到变量名.

我建议你考虑使用Java的断言功能,这是一个高度未充分利用的功能.它也可以非常简洁:

public void testMethod(String para1,String para3) {
  assert para1 != null : "para1 is null";
  assert para2 != null : "para2 is null";
  assert para3 != null : "para3 is null";
}

您只需要使用-ea参数在VM中启用断言.这是另一个优点:您可以将它们作为运行时选项打开或关闭.

应该注意的是,上面将生成一个AssertionError,这是一个错误(在Java意义上),因此不会被catch(异常e)块捕获.所以他们应该被用于真正不可恢复的条件或者永远不会发生的事情.

通常,如果用户违反合同(例如,当他们不应该传入null时),那么适当的RuntimeException可能会更好.

(编辑:李大同)

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

    推荐文章
      热点阅读