我有一个包含2个类Package1ClassAPackage1ClassB的程序包。我有另一个包,其中有一个类Package2ClassC

Package1ClassA是原型bean,可扩展运行,具有布尔变量stoprun方法。此运行方法调用单例类Package2ClassC中的方法。

Package1ClassB在一个请求中启动线程Package1ClassA。与Package1ClassB不同的线程会更改stop的值。

我需要将状态从stop更改为Package2ClassC

我无法创建对象,因此停止使用的吸气剂将无法工作。
我试图使stop易失,但是它没有用,我想我正在将stop作为参数从Package1ClassA传递给Package2ClassC

我应该如何解决这个问题?

最佳答案

您必须使用一个函数来更改布尔变量stop的值。
在相同的函数/方法中创建Package2ClassC对象。 Package2ClassC还应具有boolean(例如,start)类型的实例变量,将Package2ClassC中'stop'变量的更改值或新值分配给变量'start'。

例如:

function()
{
     stop=true; //changed value
    Package2ClassC ob=new Package2ClassC ();
    ob.start=stop;
    }


如果您不想创建对象,请在Package2ClassC中将变量'start'设为静态,然后将更改应用为:

function()
    {
         stop=true; //changed value
       /* Package2ClassC ob=new Package2ClassC (); not required for static variables*/
          Package2ClassC.start=stop;
    {


如果将变量“ start”设为静态,则无需创建对象即可使用它。我的意思是,不能使用对象来使用它。

更好的解决方案是将变量设为静态,这是因为静态变量的值对于类中的所有对象都是通用的,只有一个副本。

如果您选择第一个选项(即创建一个对象(使用非静态变量“ start”)),则必须使用该对象来调用Package2ClassC中的其他方法/函数,以跟上“ start”的值这已经更改。这是因为,如果变量不是静态的,则每个创建的新对象都将获得该特定变量的初始值(在声明期间分配给它的值)。

因此,静态要好得多。

关于java - 如何在Java中的不同软件包之间进行通信?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34282894/

10-12 05:36