gpt4 book ai didi

java - Java Tapestry 中的静态、非静态以及不同类之间的调用

转载 作者:行者123 更新时间:2023-12-01 04:18:34 25 4
gpt4 key购买 nike

在我的 Java Tapestry 应用程序中,我有一个名为 NachrichtenBubble.java 的类,它测试是否有任何消息要宣布,以及是否应显示特定元素。它看起来像这样:

public boolean ShowBubble() {
int n = getHowManyNachrichten();
if (n == 0) {
return false;
}
return true;
}

现在,在我的应用程序的不同位置,我想根据有多少消息来确定是否显示或隐藏元素。由于这已在 NachrichtenBubble.ShowBubble() 中完成,因此我希望能够从我的单独类(我们将其称为 OtherClass.java)调用 ShowBubble() 并根据结果执行操作。

如果我将其放入 OtherClass.java 中,则会收到“无法从 NachrichtenBubble 类型对非静态方法 ShowBubble() 进行静态引用”错误:

public boolean ShowNachrichten() {
boolean m = NachrichtenBubble.ShowBubble();
return m;
}

我已经阅读了这里其他静态/非静态方法问题的答案,这些问题很有教育意义,但我无法成功地将它们应用到这个问题上。我尝试在 NachrichtenBubble.java 中创建一个新的 Context 方法,并从 OtherClass.java 调用该方法,但它不起作用。

我应该坚持尝试基于上下文的解决方案,还是可以尝试其他方法从 NachrichtenBubble.ShowBubble() 获取可用结果到 OtherClass.ShowNachrichten() 中?

最佳答案

您对 NachrichtenBubble 的调用是静态的,换句话说,您没有该类的实例。不过 ShowBubble 方法是一个实例方法。您可以将 ShowBubble 方法更改为静态方法,但前提是它调用的方法 (getHowManyNachrichten()) 也可以设为静态并且不使用任何实例字段,考虑到名称,这似乎不太可能。

换句话来说,如果没有特定的 NachrichtenBubble,您(可能)不知道有多少个 Nachrichten,因此您无法询问该信息。

或者,您可以让您的 OtherClass 了解 NachrichtenBubble 的这个实例。

另一方面,我可能不会重复使用这样的方法。特别是因为您可以通过 getHowManyNachrichten() > 0 替换整个方法

关于java - Java Tapestry 中的静态、非静态以及不同类之间的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19200988/

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