Como obter o nome da classe chamadora em Java?

Eu gostaria de alguma ajuda sobre este assunto,

Exemplo:

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 é basicamente o cenário. Minha pergunta é como método podefoo() sabe quem está chamando?

EDITAR: Basicamente eu estou tentando fazer uma camada de banco de dados e na classe A vou criar um método que irá gerar instruções SQL. Essas instruções são geradas dinamicamente, obtendo os valores de todas as propriedades públicas da classe de chamada.

questionAnswers(10)

yourAnswerToTheQuestion