我有一个包含2个类Package1ClassA
和Package1ClassB
的程序包。我有另一个包,其中有一个类Package2ClassC
。Package1ClassA
是原型bean,可扩展运行,具有布尔变量stop
和run
方法。此运行方法调用单例类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/