当前位置: 首页 > 知识库问答 >
问题:

在Java中运行一个具有静态变量的类的多个实例有变通方法吗?

乜华翰
2023-03-14

所以我正在研究一个现有的模拟器软件,其结构基本上是这样的(它有一个静态成员变量包含它自己):

public class Simulator {
    private Static Simulator instance;

    public Simulator(){
        instance = this;
        //blah
        //blah
        //other things
    }

}
for(Foo f : Simulator.instance.getFoo() ){
    //blah
}

共有1个答案

山鸿彩
2023-03-14

我能想到的最快也是最讨厌的方法是用一个虚拟变量重写构造函数

    public Simulator(Boolean isDummy){

    }

现在您可以选择创建该类的多个实例而不影响其他实例。不确定参数开销在您的情况下是否可以接受。

 类似资料:
  • 问题内容: 静态变量只有实例(也就是说,它们是类的一部分)。例如:Math.pi 有什么办法可以有多个静态变量实例吗?我听说有一些与Classloader相关的东西吗? 问题答案: 如果发现需要一个静态变量的多个实例,则强烈表明您不应该首先使用静态变量。 是的,如果同一类加载到不同的类加载器中,则该类的每个副本将具有其自己的静态变量。但是,唯一可以静态引用这些静态变量的代码将是由同一类加载器加载的

  • 问题内容: 这是我写的三个类: Tester类的main方法的输出为: 为什么sx返回0而不是1?由于不是Rectangle变量的当前实例,并且该类也声明了相同的实例变量,或者Rectangle类中的变量没有像对getX()一样覆盖Shape类中的先前公共x变量。矩形类中的方法因此返回1? 同样作为一般规则,超类仅在其子类中也声明了其子类方法时才可以访问其子类的实现?这是因为编译器会看到“ Sha

  • 问题内容: 编译器不允许静态方法调用非静态方法。我知道这样做是因为非静态方法通常最终会使用实例变量。 但是拥有一个不使用实例变量的非静态方法是否有意义。如果我们的行为不影响实例状态或不受实例状态的影响,则不应将这种方法标记为静态。 问题答案: 通常,没有。如果该方法不涉及任何实例状态,则没有理由将其绑定到实例。 当然,静态方法不能被继承或覆盖,因此这是您明显希望拥有一个不使用实例状态的实例方法的明

  • 本文向大家介绍python 通过类中一个方法获取另一个方法变量的实例,包括了python 通过类中一个方法获取另一个方法变量的实例的使用技巧和注意事项,需要的朋友参考一下 1、在进行接口自动化测试过程中,经常出现接口数据的互相调用,如一些操作需要调用登陆之后返回的session或者token,下面同个简单的方法进行讲解 运行之后,打印的结果为 以上这篇python 通过类中一个方法获取另一个方法变

  • 我使用TestNG是为了使用Appium并行运行自动移动测试。 我在一个类中有一个初始化AppiumDriver对象的方法。 我从我的TestNG类中调用这个方法,以便每个线程创建它自己的驱动程序实例。问题是,因为它是一个静态变量,当每个线程试图通过静态方法从另一个类访问驱动程序时: 始终存在冲突,因为每个线程只能访问AppiumDriver对象的单个实现。 我知道我可以绕过这一点,把所有这些代码

  • 要通过这个测试,必须做的绝对最小的嘲笑是什么? 代码: 测试: 相关:在测试类中模拟私有静态最终变量(没有明确答案)