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可能会更好. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |