java: 无法从静态上下文中引用非静态 方法 maxSubArray(int[])
时间: 2024-02-28 09:51:55 浏览: 15
这个错误通常是因为您正在尝试从静态上下文(例如静态方法或静态初始化器)中引用一个非静态方法。要解决这个问题,您可以创建一个类的实例并使用该实例调用该方法。例如,如果您有一个名为 MyClass 的类,并且您想要调用其中的一个名为 maxSubArray 的非静态方法,您可以这样做:
```
MyClass obj = new MyClass();
int[] arr = {1, 2, 3};
int result = obj.maxSubArray(arr);
```
这将创建一个 MyClass 的实例,并使用该实例调用 maxSubArray 方法。
相关问题
java: 无法从静态上下文中引用非静态 方法 add(int,int)怎么改
如果要从静态上下文中引用非静态方法,需要先创建对象,然后通过对象来调用方法。具体方法是:
1. 创建一个对象
```
ClassName obj = new ClassName();
```
2. 通过对象来调用方法
```
obj.add(1, 2);
```
这样就可以调用非静态方法了。完整代码如下:
```
public class ClassName {
public void add(int a, int b) {
// 方法体
}
public static void main(String[] args) {
ClassName obj = new ClassName();
obj.add(1, 2);
}
}
```
注意:如果非静态方法在同一个类中被调用,可以直接使用方法名,不需要创建对象。但是如果在静态方法中调用非静态方法,还是需要通过对象来调用。
java: 无法从静态上下文中引用非静态 方法 add(messages.Message)
这个错误是因为你在静态上下文(例如静态方法或静态块)中引用了一个非静态方法。静态方法和静态块不能访问非静态方法,因为非静态方法需要在对象上下文中调用,而静态方法和静态块是与类相关而不是与特定对象相关。因此,如果你想在静态上下文中使用非静态方法,你需要创建一个对象并在该对象上调用该方法。
例如,假设你有一个名为`MessageList`的类,并且在其中定义了一个非静态方法`add`,你在静态方法中使用`add`方法时会出现上述错误。要解决这个问题,你需要创建一个`MessageList`对象并在该对象上调用`add`方法,如下所示:
```
public class MessageList {
private List<Message> messages = new ArrayList<>();
public void add(Message message) {
messages.add(message);
}
public static void main(String[] args) {
MessageList messageList = new MessageList();
messageList.add(new Message("Hello, World!"));
}
}
```
在这个例子中,我们创建了一个`MessageList`对象并在该对象上调用`add`方法,从而避免了静态上下文中引用非静态方法的错误。