gpt4 book ai didi

java - java中不同包之间如何通信?

转载 作者:行者123 更新时间:2023-12-01 10:44:11 25 4
gpt4 key购买 nike

我有一个包,其中有 2 个类 Package1ClassAPackage1ClassB。我有另一个包,它有一个类 Package2ClassC

Package1ClassA 是一个原型(prototype) bean,扩展了 runnable,具有一个 boolean 变量 stop 和一个 run 方法。此 run 方法调用单例类 Package2ClassC 中的方法。

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

我需要的是将 stop 的状态更改传达给 Package2ClassC

我无法创建对象,因此停止的 getter 不起作用。我尝试使 stop volatile ,但它不起作用,我猜我将 stop 作为参数传递给从 Package1ClassAPackage2ClassC 的函数>.

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

最佳答案

您必须使用函数来更改 boolean 变量 stop 的值。在同一函数/方法中创建 Package2ClassC 对象。 Package2ClassC 还应该有一个 boolean 类型的实例变量(例如 start)。将“stop”变量的更改值或新值分配给 Package2ClassC 中的变量“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 中的其他方法/函数以跟上该值这是因为,如果变量不是静态的,则创建的每个新对象都将获得该特定变量的初始值(在声明期间分配给它的值)。

所以静态要好得多。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com