Tag: 实例

如何设置已经运行的应用程序的焦点?

我使用ServerSocket端口只运行我的Java Swing应用程序的一个实例,所以如果用户试图打开另一个程序实例,我会向他显示“另一个实例已经打开”的警告。 这工作正常,但我没有显示此消息,而是希望将焦点放在正在运行的应用程序本身上,就像某些程序(MSN Messenger)一样,即使它已被最小化。 对于各种操作系统,是否有解决方案?

在Java中,为什么超类方法不能从子类实例访问受保护的或私有的方法/变量?

让我们从另一个行为开始:即使您将方法/变量声明为私有,同一个类的另一个实例也可以访问它。 没关系,我可以忍受它。 我将这些类称为私有而不是实例私有。 现在问题部分:例如,在运行时我希望能够检查此类中的所有String变量都不为null,如果它们为null,则应将其更改为字符串“NULL”。 我可以使用reflection来运行变量并获取它们的值。 但是如果我扩展我的类并添加私有甚至保护变量,我的基类就无法访问它们。 在使用它们之前,我必须对变量设置setAccessible 。 所以请向我解释为什么基类(超类)不能从其子类访问私有/受保护变量。 它是它的子类,所以我不明白。 这背后有什么想法? 我知道超类不应该知道它的子类,但在我的例子中它是有意义的,不是吗? 是因为我不能或不应该以这种方式限制我的子类? 更新:根据答案,我还想知道:为什么不从同一个类访问另一个实例的私有变量被视为违反封装?

枚举单例如何运作?

以前不是使用枚举,我会做类似的事情: public static ExampleClass instance; public ExampleClass(){ instance=this; } public static ExampleClass getInstance(){ return instance; } 然后有人告诉我一个枚举单身人士: public enum Example{ INSTANCE; public static Example getInstance(){ return Example.INSTANCE; } 在第一个例子中,我必须实例化对象才能创建实例。 有了枚举,我不需要这样做..至少它出现了。 有人可以解释这背后的原因吗?

App Engine – 打开的实例太多

我的应用程序运行在App引擎Java SDK上,从今天早上开始,我注意到开放实例没有处理新请求,而是正在启动新的Frontent实例。 所以现在我有大约250个开放实例(比通常多很多)。 此外,实例在1.9.5版上运行。 请指教!

什么时候可以使用instanceof?

我正在设计一款游戏。 在游戏中,各种游戏对象根据他们需要做的事情扩展不同的接口(和一个抽象类),并传递给处理程序,这些处理程序按照定义的时间间隔处理具有特定接口的项目(它们实际上将所有工作分散开来以一种简洁的方式确保始终处理输入/video/等)。 无论如何,其中一些对象扩展了抽象类Collider并传递给CollisionHandler。 Collider类和处理程序负责碰撞中涉及的所有技术,并且只要求对象实现collidesWith(Collider c)函数,并根据它碰撞的内容进行修改。 许多不同类的对象将彼此碰撞,并且将根据它们碰撞的对象的类型及其特定属性而以非常不同的方式起作用。 完美的解决方案似乎是像这样使用instanceof: class SomeNPC extends Collider{ collidesWith(Collider c){ if(c instanceof enemy){ Fight it or run away depending on your attributes and theirs. } else if(c instanceof food){ Eat it, but only if it’s yellow. } else if(c instanceof BeamOfLight){ Try to move towards its source. } } } 这实际上似乎是一个合法的地方。 我感觉很糟糕。 […]

在引用变量上调用方法vs在新对象上调用方法

我在调用非静态方法时感到困惑 class A { void doThis() {} public static void main(String… arg) { A a1 = new A(); a1.doThis(); // method – 1 new A().doThis(); // method – 2 } } 我知道方法1和方法2都会调用doThis() ,但是有任何function差异吗? 方法-2中新对象的引用是什么。

何时使用静态变量/方法以及何时在Java中使用实例变量/方法?

我想问一个问题,什么时候使用静态变量/方法或在Java中的其他情况下的实例变量/方法是有利的? 我知道这取决于某些情况(比如将util-classes编程为静态方法),但我们可以声明类似于一般策略的东西吗?

Java中有“this”这个名字吗?

Eclipse会给出一个错误,“赋值的左侧必须是一个变量”,当我尝试类似的东西时: public class Thing{ String a1; int a2; public void meth(){ Thing A = new Thing(); this = A; } } 我必须分配每个变量( this.a1 = A.a1; this.a2 = A.a2; )作为解决方法。 是否有其他方法可以在不通过每个变量字段的情况下执行此操作 如果this不是一个变量,它叫什么?

在实例方法中写入静态变量,为什么这是一个不好的做法?

我在这里用eclipse中的这个findbugs警告有点困惑。 public class MyClass { public static String myString; } public class AnotherClass { public void doSomething() { MyClass.myString = “something”; } } 这给了我一个findbugs警告“从实例方法写入静态字段”,但这并没有给我一个警告: public class MyClass { public static String myString; } public class AnotherClass { public void doSomething() { doAnotherThing(); } public static doAnotherThing() { MyClass.myString = “something”; } } 这有什么不同?,为什么从实例方法写入静态变量是一种不好的做法?我认为它与同步有关,但我仍然不清楚。 我知道这看起来变量应该是final,但我从属性文件加载值。

java本地和实例对象创建时的StackOverflowError

嗨,任何人都可以解释一下,为什么这段代码片段给我StackOverflowError我真的很感激,如果你能解释当instanceObj初始化和调用ObjectTest构造函数和java.lang.Object构造函数时发生了什么。 在我看来ObjectTest构造函数循环一遍又一遍。但我不知道确切的原因? 所以任何建议…… public class ObjectTest { public ObjectTest() { } ObjectTest instanceObj = new ObjectTest(); public static void main(String[] args) { ObjectTest localObj = new ObjectTest(); } }