例如(使用android)如果我想声明一个Camera.Size类的常量,我没有明显的方法这样做。我试过了:
private static final Camera.Size CAMERA_SIZE = Camera.new Camera.Size(640, 480);
显然这不起作用,因为您需要有一个相机类的实例来调用'new',如下所示:
Camera mCamera = Camera.open();
Camera.Size size = mCamera.new Size(640, 480);
但是在创建常量之前我不能这样做。有没有办法解决这个问题,或者只是不可能做到这一点?
答案 0 :(得分:2)
Camera mCamera = Camera.open();
private final Camera.Size size = mCamera.new Size(640, 480);
答案 1 :(得分:1)
public class Camera
{
public static final Camera.Size DEFAULT_SIZE = new Camera.Size(640, 480);
}
您可以访问常量: Camera.DEFAULT_SIZE
答案 2 :(得分:1)
我认为你需要这样做:
private static final Camera.Size SIZE;
static {
Camera mCamera = Camera.open();
SIZE = mCamera.new Camera.Size(640, 480);
}
或......
private static final Camera.Size SIZE =
(Camera.open()).new Camera.Size(640, 480);
然而,这一切似乎都有些不确定。绑定到SIZE
的对象将绑定到无法访问的Camera
实例。
我怀疑Camera.Size
确实应该是static
班级...考虑到你在这里使用它的方式。
public class Camera {
public static class Size { ... }
...
public static final Size SIZE = new Size(...);
...
}
答案 3 :(得分:1)
你做不到。
Size是Camera的非静态内部类。你只能在封闭类Camera中创建一个Size;你不能构造一个新的Camera.Size。
基于此,我会说这个API写得不正确。构造函数应该是私有的,或pkg私有,以明确表示您无法实例化此类。
你没有说你是如何使用它的,但看起来这是一个从Camera内部的各种方法返回的对象。我没有看到它传递到任何方法的地方。为什么你需要构建它?