我经常发现自己编写这样的代码:
throwExceptionWhenEmpty(fileType, "fileType");
throwExceptionWhenEmpty(channel, "channel");
throwExceptionWhenEmpty(url, "url");
throwExceptionWhenEmpty
方法执行如下操作:
private void throwExceptionWhenEmpty(final String var, final String varName) {
if (var == null || var.isEmpty()) {
throw new RuntimeException("Parameter " + varName + " may not be null or empty.");
}
}
我想避免这种明显的冗余将变量名称作为字符串传递。有没有一种方法java编译器可以为我在字符串中插入变量名?
如果我能写出类似的内容,我会很高兴:
throwExceptionWhenEmpty(fileType, nameOf(fileType));
答案 0 :(得分:3)
这应该回答你的问题:SO: How to get name of a variable。
Java中不可能(轻松)实现。
您可以使用预处理器并将其集成到构建过程中。这可能非常简单和便携。但正如Stephen C在评论部分所说的那样,这不是Java方式,因此不推荐使用。
答案 1 :(得分:2)
编译代码时,变量名称会丢失,除非Reflection提供对它们的访问权限(即便如此),我很确定这是不可能的。遗憾。
答案 2 :(得分:2)
Java实际上没有办法做到这一点,但您可以从IDE获得一些帮助(如果您使用的话)。在Eclipse中,您可以创建一个这样的模板,它可以提供帮助:
throwExceptionWhenEmpty(${varname}, "${varname}");
${cursor}
答案 3 :(得分:2)
不,Java不能这样做,直到它开始支持使字段(和方法)成为编程语言的第一类公民的闭包。
有关其中一个提案的概述,请参阅http://docs.google.com/Doc?id=ddhp95vd_6hg3qhc,您可以使用#field
语法在其中执行所需操作。
答案 4 :(得分:0)
你可以做点什么(我可能会误解你想做什么)
var.getClass()。的getName()
Var是你的Object作为Object传递给方法。