我想检查类名在编译时是否有效。我当然可以导入类并获得编译错误,但我想要的是能够捕获此错误。我怎么能这样做,如果这不是一个好方法,我可以做其他替代方案吗?
例如
import com.foo.classname;
public class Foo {
public String classProperties() {
if(classname) {//this is when class is found
ClassName className = new ClassName();
return className.toString();
}
else {//this is when class is not found
return getOtherProperty();
}
}
}
请不要发布任何运行时,例如Class.forName
解决方案。
编辑:收到如此多的负面反馈后。我想解释一下我的想法。
我的主要动机是:
1)我见过一些使用Reflection的代码。例如从JDK 7加载库并使用该库方法初始化String,还要编写其他内容(可能效率较低)来捕获发生异常的块。我想避免这种情况
2)编译器都会创建错误和警告。如果我们可以抑制警告,那么我认为可以抑制错误。
答案 0 :(得分:2)
要获得这样的编译错误,您必须在编译器级别工作,要么编写自己的编译器,要么使用JavaCC或Javassist之类的东西。
干杯