例如,IntelliJ 不会在实例变量上显示静态睡眠方法
Thread z = new Thread();
z.sleep(1000); // Eclipse shows sleep as part of z, while IntelliJ do not
看来 sleep 是 z 变量的一部分
如何防止 Eclipse 在实例变量上显示静态方法?如果可能的话,如何在 Eclipse-wise 和命令行中产生编译错误?
不确定是否可以将其从选项中删除,但可以使 Eclipse 产生错误:
首选项 -> Java -> 编译器 -> 错误/警告 -> 对静态成员的非静态访问 -> 设置为错误。
这可能是一种解决方法,但在保存操作(Preferences->Java->Editor->Save Actions)中,您可以要求“<em>使用声明类型更改对静态成员的非静态访问”,这将自动删除此类用法.
此外,Eclipse 通常不会首先建议静态提案。如果是这种情况,您应该检查您的Content Assist设置(Preferences->Java->Editor->Content Assist)。尤其是,确保将排序建议设置为“<em>按相关性”。
你不能从命令行让它成为编译错误,因为对象有它的类,并且你可以在这个对象上调用静态方法,这不仅会影响这个对象。由于这种全局影响,从类调用静态方法然后从对象调用静态方法只是一个更好的设计,这就是 IntelliJ 阻止你这样做的原因。