2012-03-19 75 views
2

例如(使用android)如果我想聲明一個Camera.Size類的常量我沒有明顯的方式這樣做。我已經試過:是否有可能具有內部類的常量? (Java)

private static final Camera.Size CAMERA_SIZE = Camera.new Camera.Size(640, 480); 

很顯然,你需要有一個攝像頭類的實例調用「新」有,像這樣並沒有工作:

Camera mCamera = Camera.open(); 
Camera.Size size = mCamera.new Size(640, 480); 

但我可以」在創建常量之前先做這件事。有沒有辦法解決這個問題,還是僅僅做不到?

+0

'private static final Camera.Size = Camera.new Camera.Size(640,480);'在類型和'='之間缺少一個字段名稱。 – 2012-03-19 04:41:05

+0

這就是我迷失的地方。你是否想爲攝像機的每個新實例設置不同的Camera.Size,或者您是否想要設置所有Camera對象的大小? – AndrewKS 2012-03-19 04:48:45

+0

我只是想要一個尺寸常數,我可以在需要時傳遞給攝像機參數,而不是自己寫出這些值。像:params.setPictureSize(CONSTANT.width,CONSTANT.height),而不是params.setPictureSize(640,480) – sler 2012-03-20 01:22:23

回答

1

你不能那樣做。

大小是一個非靜態的內部類的相機。你只能在封閉類Camera中創建一個Size;你不能構建一個新的Camera.Size。

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.3_r1/android/hardware/Camera.java#Camera.Size

在此基礎上,我會說這樣做的API編寫不當。構造函數應該是私有的,或者私有的pkg來明確你不能實例化這個類。

你沒有說你是如何使用它,但它看起來像這是一個從Camera內的各種方法返回的對象。我不知道它從哪裏傳入任何方法。你爲什麼需要構建它?

+0

我沒有技術上的必要,我想創建一個默認大小的相機拍攝的照片。我想最好的選擇將是有2個獨立的常量的寬度和高度。 – sler 2012-03-20 01:28:37

2
Camera mCamera = Camera.open(); 
private final Camera.Size size = mCamera.new Size(640, 480); 
+0

這真的沒有幫助,我想在類的範圍內創建一個常量,所以我不能在創建常量之前調用Camera.open() – sler 2012-03-19 04:43:40

1
public class Camera 
{ 
     public static final Camera.Size DEFAULT_SIZE = new Camera.Size(640, 480); 
} 

您可以訪問常數:Camera.DEFAULT_SIZE

+0

我想你假設我自己寫了這個類(我沒有)。對不起,我可能應該在說明中更清楚:) – sler 2012-03-20 01:25:40

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); 

Howeve這一切似乎有點不妥。綁定到SIZE的對象將綁定到不可訪問的Camera實例。

我懷疑Camera.Size真的應該是一個static類...考慮到你在這裏使用它的方式。

public class Camera { 
    public static class Size { ... } 
    ... 
    public static final Size SIZE = new Size(...); 
    ... 
} 
相關問題