java - 获取在 Java 中使用的调用名称

标签 java command-line args

我试图找到一种通用的方法来复制此 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/

相关文章:

java - 如何在java中使用Option类(cli-commons)

function - Clojure:如何将剩余参数 "& args"发送到列表中?

java - 防止 JBoss 7 (Jeeves DBMS) 上 JNDI 数据源的 Oracle 连接自动提交

java - 使用JTable类时,JScrollPane的构造函数和它的add方法有什么区别?

使用 Graphics Magick 转换命令时出现 Git fatal error

c - 如何获取文件中的元素数量?

python - Python 2.7 中 *args 附近的语法无效

java - Android - 将日期格式化为 "Day, Month dd, yyyy"

java - 如何使用java在正则表达式中转义星号

windows - 如何在后台从命令行启动 GUI 应用程序?