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()
。
我已经阅读了所有关于这个特定错误的其他文章 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()
。