Java: 无法对非静态方法进行静态引用错误

Java: Cannot Make Static Reference to Non Static Method error

我已经阅读了所有关于这个特定错误的其他文章 post,这对我来说仍然完全没有意义。

到目前为止我已经尝试过:

import android.hardware.camera2.CameraManager;

public class HelloWorld {
    
    public int getcameracount() {
        try {
            return CameraManager.getCameraIdList().length;
        } finally {
            
        }
    }

    public void main(String[] args) {

System.out.println("number of cameras: " + getcameracount());

    }
}

import android.hardware.camera2.CameraManager;

public class HelloWorld {

    public void main(String[] args) {
        
        new cameraids list1;

System.out.println("number of cameras: " + list1.CameraIDList.length);

    }
}

class cameraids {
public String[] CameraIDList = CameraManager.getCameraIdList();
}

import android.hardware.camera2.CameraManager;

public class HelloWorld {

    public void main(String[] args) {
        
        cameraids list1 = new cameraids();

System.out.println("number of cameras: " + list1.CameraIDList.length);

    }
}

class cameraids {
public String[] CameraIDList = CameraManager.getCameraIdList();
}

还有很多很多其他的。

毫无例外,我得到

1. ERROR in /storage/emulated/0/redacted/redacted/src/HelloWorld.java (at line 19)
    String[] CameraIDList = CameraManager.getCameraIdList();
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Cannot make a static reference to the non-static method getCameraIdList() from the type CameraManager

作为一个错误。每次尝试只会更改行号。

我也看过各种代码示例,它们都使用了

的一些变体
String[] idlist = manager.getCameraIdList();

其中 idlist 是任何变量名,manager 是 manager、Cmanager 或 CameraManager 的任何变体,具体取决于示例作者的设置。我的是 CameraManager。

这些例子似乎都 'just work' 各自的作者。

我不知道我在做什么不同。我知道一些汇编、C++、M 和 G 代码、基础等,相比之下它们看起来都很简单。为什么我不能只打印一个数字?

P.S。文件路径被编辑,因为它包含很多脏话

如错误所述,CameraManager 中的方法 getCameraIdList() 是 non-static,这意味着您需要 CameraManager 的实例才能访问它。

假设您指的是 Android 的 CameraManager class,这就是您获取 CameraManager 实例的方式:

CameraManager cameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
// NOTE: You need an instance of 'Context' in order to access getSystemService()

然后您可以像示例中那样使用 cameraManager.getCameraIdList()