¿Cómo obtener el nombre de la clase que llama en Java?

Me gustaría un poco de ayuda en este asunto,

Ejemplo:

public class A {

    private void foo() {

          //Who Invoked me

    }

}

public class B extends A { }

public class C extends A { }

public class D {

     C.foo();

}

Este es básicamente el escenario. Mi pregunta es ¿cómo puede el método?foo() saber quien lo llama

EDITAR: Básicamente estoy tratando de hacer una capa de base de datos, y en la Clase A crearé un método que generará sentencias SQL. Dichas declaraciones se generan dinámicamente al obtener los valores de todas las propiedades públicas de la clase que llama.

Respuestas a la pregunta(11)

Su respuesta a la pregunta