我有一个包含2个Package1ClassA
和Package1ClassB
类的包。我有另一个包含Package2ClassC
类的包。
Package1ClassA
是一个原型bean,扩展了runnable,有一个布尔变量stop
和一个run
方法。此run方法调用单例类Package2ClassC
中的方法。
Package1ClassB
在一个请求中启动线程Package1ClassA
。与Package1ClassB
不同的帖子会更改stop
的值。
我需要的是将stop
的状态更改传达给Package2ClassC
。
我无法创建一个对象,因此停止的getter将无效。
我试图让stop
变得不稳定,但它没有用,我想我已经将stop作为参数传递给Package1ClassA
到Package2ClassC
的函数。
我应该怎么解决这个问题?
答案 0 :(得分:1)
您必须使用函数来更改布尔变量stop的值。 在相同的函数/方法中创建Package2ClassC对象。 Package2ClassC也应该有一个boolean类型的实例变量(eg.start)。分配' stop'的更改值或新值。变量变量' start'在Package2ClassC。
例如:
function()
{
stop=true; //changed value
Package2ClassC ob=new Package2ClassC ();
ob.start=stop;
}
如果您不想创建对象。请使用变量' start'在Package2ClassC static.Then更改将应用为:
function()
{
stop=true; //changed value
/* Package2ClassC ob=new Package2ClassC (); not required for static variables*/
Package2ClassC.start=stop;
{
如果变量'开始'是静态的,你不需要创建一个对象来使用它。我的意思是,你不能使用一个对象来使用它。
更好的解决方案是将变量设置为static。这是因为静态变量的值对于类中的所有对象都是通用的。只有一个副本。
如果您选择第一个选项,即创建一个对象(使用非静态变量' start'),则必须使用同一个对象将Package2ClassC中的其他方法/函数调用为跟上' start'的价值。已经改变了。这是因为,如果变量不是静态的,那么创建的每个新对象都将获得该特定变量的初始值(在声明期间分配给它的值)。
所以静态要好得多。