非常常见的初学者错误是当您尝试"静态"使用类属性而不创建该类的实例时.它会留下您提到的错误消息:
您可以将非静态方法设为静态,也可以使该类的实例使用其属性.
为什么?我不是要求解决方案.我很高兴知道它背后的原因是什么.核心原因!
private java.util.List<String> someMethod(){
/* Some Code */
return someList;
}
public static void main(String[] strArgs){
// The following statement causes the error. You know why..
java.util.List<String> someList = someMethod();
}
Run Code Online (Sandbox Code Playgroud) 我相信你们都知道我的意思 - 代码如下:
Thread thread = new Thread();
int activeCount = thread.activeCount();
Run Code Online (Sandbox Code Playgroud)
引发编译器警告.为什么不是错误?
编辑:
要明确:问题与Threads无关.我意识到在讨论这个问题时经常给出Thread示例,因为它们可能真的搞砸了它们.但问题确实是这样的使用总是无稽之谈,你不能(胜任地)写出这样的电话并且意味着它.这种类型的方法调用的任何例子都是barmy.这是另一个:
String hello = "hello";
String number123AsString = hello.valueOf(123);
Run Code Online (Sandbox Code Playgroud)
这使得它看起来好像每个String实例都带有"String valueOf(int i)"方法.
我是Java的新手,我对某些事感到困惑:
在Java中的简单hello world程序中,没有创建任何对象,所以该类在以下示例中如何工作?
public class HelloWorld
{
public static void main (String args[])
{
System.out.println ("Hello World!");
}
}
Run Code Online (Sandbox Code Playgroud) 我已经读过我可以定义一个类static,但我不明白为什么我可能需要这样做.静态类有什么用?我什么时候需要使用它们?我会很感激的例子.