我试图找到一种通用的方法来复制此 C 功能:
int main(int argc, char** argv){
fprintf(2,"%s: error you did something wrong.\n", argv[0]);
return 1;
}
在Java中。到目前为止,唯一的方法是将其硬编码到应用程序中,这很丑陋。我想得到类似于:
someObj.getClass().getSimpleName();
在我的 static main 中,没有引用我自己的类。
这可能吗?
编辑
我搜索了一个好小时并没有打开这个。
重复的问题,请参阅 $0 (Program Name) in Java? Discover main class?求解答
最佳答案
java 查找要在其中运行 static void main()
的类的方式是通过传递给 java 可执行文件(和类路径)的名称。因此,除非传递了正确的名称,否则不可能让主程序运行。
*好吧,除非找到的 main 调用类似“FooBar.main()”的东西或使用类加载器来找到它。
即便如此,因为 main 是静态的并且静态函数不是虚拟的,所以无论调用什么 main 都会被调用,因为 main 是在那个类上调用的。因此,在您的代码中,名称(未将参数传递给 main)只是 main
函数所在的类的名称。
因此永远不会出现错误,因此永远不需要查找名称。
关于java - 获取在 Java 中使用的调用名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/718057/