Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以从另一个类访问非静态类的实例_Java_Android - Fatal编程技术网

Java 是否可以从另一个类访问非静态类的实例

Java 是否可以从另一个类访问非静态类的实例,java,android,Java,Android,假设我有A班和B班 我知道我不能从classB调用classA的非静态变量或方法,因为系统不知道我要使用哪个classA实例。但是有没有办法指定哪个实例呢 类似于这样:在类A中,我声明了一个静态变量,它可以保存类的特定实例的某种ID或上下文 class classA{ static Instance instance onCreate(){ instance = thisInstance(); } Method1(){ } } 然后在B类中,我会这样引用该实

假设我有A班和B班

我知道我不能从classB调用classA的非静态变量或方法,因为系统不知道我要使用哪个classA实例。但是有没有办法指定哪个实例呢

类似于这样:在类A中,我声明了一个静态变量,它可以保存类的特定实例的某种ID或上下文

class classA{
  static Instance instance 

  onCreate(){
    instance = thisInstance();
  }

  Method1(){
   }
}
然后在B类中,我会这样引用该实例:

  ClassA.instance.method1();
这样的事情可能吗?如果是,确切的语法是什么


[奖金]:如果不是,从另一个类调用类中的方法的最简单方法是什么?我认为需要某种类型的事件处理。(我来自嵌入式c世界)

在ClassA中声明一个静态成员

public class ClassA {
    public static ClassA object = new ClassA();

    public void doStuff() {
        // do stuff
    }
}
然后在B班

public void someMethod() {
     ClassA.object.doStuff();
}

在B类中,您可以定义:

Class B {
  private static ClassA instanceA = null; // By making it null, you can later confirm that the instance was successfully passed by making sure instanceA != null.

  /**
  * This method allows you to pass the instance of ClassA into B so you can use its non-static methods.
  */
  public static void setInstanceA(ClassA instance) {
    instanceA = instance;
  }
}

获取对另一个对象的引用并对其调用方法?您可能想退一步,复习一些Java基础知识。您可能只想使用
单例模式不,这不是我想做的,我想在classA中调用一个在classA中定义的方法,而不是像toString这样的内置方法。这也行不通,我希望引用通过启动应用程序创建的classA,而不是classA的任意副本。在我的例子中,ClassA是我的主要活动。ClassA.object是一个静态变量。静态变量只在执行开始时初始化一次。它是由类的所有实例共享的单个副本。您可以在ClassA中创建一个私有构造函数,以确保ClassA.object是应用程序中ClassA的唯一实例。