this.getClass()能够获得他的Class对象

解决方案 »

  1.   

    我的问题是:
    Class B{
    A a = new A();
    a.method1();
    }Class A{
    public method1(){
    这里得到调用这个方法的B的class,但不通过传递参数的方法
    }
    }
      

  2.   

    为A写一个构造函数,在A的构造函数中传入B的实例。
    class A {
      private B b; 
      public A(B b){
        this.b = b;
      }  public void  method1(){
        //这里可以使用this.b;
      }
    }class B{
      public void method2(){
        A a = new A(this);
        a.method1();
      }
    }
      

  3.   

    不好意思,一上来看错楼主的意思了。
    为了能够看到是谁调用的,可以在你的方法中加入如下代码即可:
    (new Throwable()).printStackTrace();
      

  4.   

    如果想解释的话,就使用
    StackTraceElement[] elements = (new Throwable()).getStackTrace();
    就能获得调用者的class,拿到类后反射就能获得全部信息了。呵呵
      

  5.   

    这里有一篇文章可能对你有帮助
    http://www.cn-java.com/target/news.php?news_id=1774
      

  6.   

    在java中  java为每一个.class  全部生成一个唯一的 class对象比如: Class B{
          A a = new A();
          a.method1();
          }      Class A{
           public method1(){
           this.class //就是目前b的class对象      }你是不是想实现java的递归调用马?~~~~你测试一下 我想是没有问题的 
    但是前提是你必许 实例化该类
    }
      

  7.   

    利用安全管理器,这里给出一个最简单的例子!!public class Caller 
    {
    public static void main(String[] args) 
    {
    System.setSecurityManager(new MySecurityManager());
    new A().method();
    }
    }
    class MySecurityManager extends SecurityManager
    {
    protected Class[] getClassContext(){
    return super.getClassContext();
    }
    };
    class A
    {
    void method(){
    new B().method();
    }
    }
    class B
    {
    void method(){
    MySecurityManager sm=(MySecurityManager)System.getSecurityManager();
    Class[] cls=sm.getClassContext();
    //for(int i=0;i<cls.length;i++) System.out.println(cls[i]);
    System.out.println(cls[2]+" is Calling me");
    }
    }
      

  8.   

    My God!真的能实现。可惜我刚开贴的分数给的太少了!