Pergunta

Eu estou tentando encontrar uma maneira genérica para replicar essa funcionalidade C:

int main(int argc, char** argv){
    fprintf(2,"%s: error you did something wrong.\n", argv[0]);
    return 1;
}

em java. Até agora, a única maneira era codificar isso no aplicativo, que é feio. Eu gostaria de obter algo semelhante a:

someObj.getClass().getSimpleName();

dentro da minha estática principal, sem se referir de volta para minha própria classe.

Isto é mesmo possível?

Editar

A minha busca por uma boa hora não virou até um presente.

pergunta duplicados, consulte $ 0 (Nome do Programa) em Java? Descubra classe principal? para resposta

Outras dicas

A forma java encontra a classe em que para executar static void main() é pelo nome passou para o executável java (eo classpath). Portanto, não é possível ter run principal a menos que o nome correto foi aprovada.

* Bem, a menos que o principal que é encontrado chamadas algo como "FooBar.main ()" ou usa o carregador de classe para encontrá-lo.

Mesmo assim, como principal é estático e funções estáticas não são virtuais, o que quer principal é chamado é chamado porque principal foi chamado para essa classe. Assim, no seu código, o nome (que inn't passou nos argumentos a principal) em apenas o nome da classe que a função main está.

Assim, nunca há um erro, e por isso nunca precisa encontrar o nome.

A única coisa que posso pensar é que você determinar qual segmento é o segmento principal, começa o rastreamento de pilha desse segmento e, em seguida, caminhar de volta para o topo da pilha e interrogar o nome da classe e método de nome do elemento a ver se é o que você quer.

Isso é que muito nojenta. Eu reconsidere a exigência original e veja se não há um meio mais simples e direta de alcançar o que deseja.

Eu não acho que isso é possível. A maneira mais fácil de imprimir isso é usando MyClass.class.getSimpleName (), ou você pode criar (não jogar) um Throwable, imprimir o rastreamento de pilha, e de lá ir.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top