I have a cast issue whose generates a java.lang.ClassCastException exception:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.message.MessageFactory;
public class MyLogger extends org.apache.logging.log4j.core.Logger {
MyLogger(LoggerContext context, String name, MessageFactory messageFactory) {
super(context, name, messageFactory);
// TODO Auto-generated constructor stub
}
public static MyLogger getLogger(String name) {
org.apache.logging.log4j.core.Logger logger_ = (org.apache.logging.log4j.core.Logger) LogManager
.getLogger(name);
return (MyLogger) logger_;
}
}
While this is the same principle as this one:
public class test {
private static class A {
}
private static class B extends A {
}
public static void main(String [] args) {
A a = new A();
B b = new B();
a = (A) b;
}
}
Can someone give an explaination?
LogManager.getLogger(name)returns an instance ofMyLogger? Why would it?