365連休

にわかのandroidとかの開発メモ。

Javaの内部クラスのインスタンス化

android.hardware.CameraのCamera.Sizeをnewしようと思ったら、Android Studioのコード解析で

Camera.Size size = new Camera.Size(100, 100);
'android.hardware.Camera' is not an enclosing class

って叱られた。日本語でお願いします。

' アンドロイド. ハードウェア. カメラ ' は囲みクラスではありません

直訳してもわからん。

 

Javaではpublicな内部クラスであっても外からインスタンス化できないそうです。

staticな内部クラスなら直接インスタンス化できるそうです。

勉強になりました。くっそ不便。

 

もし、親クラスのインスタンスがあれば、その内部クラスをインスタンス化できるそうです。

Camera camera = Camera.open(0);
Camera.Size size = camera.new Size(100, 100);

 

なんか気持ち悪いけど、こういう文法らしいっす。

リフレクションがどうこうでインスタンス化する方法もあるみたいだけど、変化球っぽいので却下。