非常常见的初学者错误是当您尝试"静态"使用类属性而不创建该类的实例时.它会留下您提到的错误消息:
您可以将非静态方法设为静态,也可以使该类的实例使用其属性.
为什么?我不是要求解决方案.我很高兴知道它背后的原因是什么.核心原因!
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) 当我尝试在静态类中调用非静态方法时,我收到错误.
无法从类型回放中对非静态方法methodName()进行静态引用
我不能使方法静态,因为这也给我一个错误.
此静态方法无法从xInterface隐藏实例方法
有没有办法在另一个静态方法中调用非静态方法?(这两种方法分别是单独的包和单独的类).
我有以下代码,我想打电话data1()给data2().这可能在C#中吗?如果是这样,怎么样?
private void data1()
{
}
private static void data2()
{
data1(); //generates error
}
Run Code Online (Sandbox Code Playgroud) 我无法找到是否可以从Python中的静态方法调用非静态方法.
谢谢
编辑:好的.静电静电怎么样?我可以这样做:
class MyClass(object):
@staticmethod
def static_method_one(cmd):
...
@staticmethod
def static_method_two(cmd):
static_method_one(cmd)
Run Code Online (Sandbox Code Playgroud) 可能重复:
为什么我只能从静态函数访问静态成员?
当我试图从静态方法中调用普通方法时,我得到了错误:
非静态字段,方法或属性需要对象引用
所以这意味着我需要创建Class的对象然后调用nonstatic方法.如果我想直接调用该方法,那么我必须将该方法声明为Static.
但是,在这种情况下,调用方法和被调用方法属于同一个类.那么为什么我需要在从静态方法调用时创建对象,而我可以从非静态方法调用非静态方法.
例如:
class Program
{
//public void outTestMethod(int x,out int y)
//{
// y = x;
//}
static void Main(string[] args)
{
int a = 10;
int b = 100;
outTestMethod(a,out b);
}
private void outTestMethod(int x, out int y)
{
y = x;
}
}
Run Code Online (Sandbox Code Playgroud)
Error:An object reference is required for the non-static field, method, or property