我试图在类的方法中实例化一个对象,以便它可以在类的任何地方使用。我来自python背景,它非常简单,你可以将实例化的对象传递给它的实例" s" self"如下。
self.camera = CameraInstance()
你是如何用Java做到的?我尝试了类似下面的东西,但它并不喜欢它。
private void init_camera_settings() {
public CameraInterface camera;
camera.TakePhoto()
}
private void someotherMethod() {
camera.TakePhoto()
}
两种方法属于同一类。原因是因为我只想在某些情况下实例化相机对象。
谢谢!
答案 0 :(得分:3)
您无法在方法中声明字段。在Java中,类型要么具有字段,要么不具有字段。同一个类的每个实例都有相同的字段集。
但您可以声明字段(不在方法中)并决定仅在方法中为其指定值:
// Note: avoid public fields
public CameraInterface camera;
private void initCameraSettings() {
camera = new Camera();
}
private void someotherMethod() {
camera.takePhoto();
}
(该字段将具有默认值,在本例中为null
,直到您为其指定不同的值。)
顺便说一句,我强烈建议反对公共领域。我将每个字段设为私有,并添加属性以允许在必要时访问。这允许您稍后更改实现细节。一个例外是public static final
不可变类型的字段,基本上是常量,但即使在那里我也要谨慎。
答案 1 :(得分:1)
要在不同方法的class
中使用变量,变量应该具有类范围。您通常使用new
来创建新对象
public MyClass {
public CameraInterface camera = new Camera ();
private void init_camera_settings() {
camera.TakePhoto()
}
private void someotherMethod() {
camera.TakePhoto()
}
}
答案 2 :(得分:0)
self.camera = CameraInstance()
相当于:
class Foo {
private CameraInstance camera;
public Foo() {
this.camera = new CameraInstance();
}
// use "this.camera" in methods.
}