English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Como acessar o objeto de uma classe sem usar o nome da classe no contexto estático do Java?

A única solução possível é obter o rastreamento de pilha da thread atual. Use os elementos do rastreamento de pilha para obter o nome da classe. Passe-o para o método forName() da classe chamada Class.

Isso retornará um objeto Class, que você pode usarnewInstance()método para obter uma instância deste tipo.

Exemplo

public class MyClass {
   String name = "Krishna";
   private int age = 25;
   public MyClass() {
      System.out.println("Objeto da classe MyClass");
      System.out.println("name: "+this.name);
      System.out.println("age: "+this.age);
   }
   public static void demoMethod() throws Exception {
      StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
      StackTraceElement current = stackTrace[1];
      Class.forName(current.getClassName()).newInstance();
   }
   public static void main(String args[]) throws Exception {
      demoMethod();
   }
}

Resultado de saída

Objeto da classe MyClass
name: Krishna
age: 25
Você pode gostar também