mardi 11 décembre 2018

Java - Get name of instantiating class in the constructor [duplicate]

I'd like to set a String, call it tag, inside class's (lets call it logger) constructor. Then tag should be based on the class that instantiated this logger and print statements with corresponding names if instantiated in different classes.

I would expect something like the below:

class Logger {
  private String tag;

  public Logger()  {
    tag = this.getClass().getEnclosingClass().getSimpleName();
  }

  public printTag() {
    System.out.println(tag);
  }

And then in the instantiating class:

Logger l = new Logger();
l.printTag();

This throws: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Class.getSimpleName()' on a null object reference

Is this possible? Is getEnclosingClass() the right method for this?





Aucun commentaire:

Enregistrer un commentaire