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