タグ付けされた質問 「inner-classes」

オブジェクト指向プログラミング(OOP)では、内部クラスまたはネストされたクラスは、別のクラスまたはインターフェースの本体内で完全に宣言されたクラスです。ただし、Javaでは、内部クラスは静的でないネストされたクラスです。


11
包含クラスJavaではありません
テトリスゲームを作ろうとしていますが、コンパイラエラーが発生します Shape is not an enclosing class オブジェクトを作成しようとしたとき public class Test { public static void main(String[] args) { Shape s = new Shapes.ZShape(); } } それぞれの形状に内部クラスを使用しています。これが私のコードの一部です public class Shapes { class AShape { } class ZShape { } } 何が悪いのですか?

14
最終版と効果的な最終版の違い
私はJava 8でラムダで遊んでいて、警告に出くわしましたlocal variables referenced from a lambda expression must be final or effectively final。匿名クラス内で変数を使用する場合、それらは外部クラスでfinalでなければならないことは知っていますが、それでも-finalと実質的にfinalの違いは何ですか?

1
(匿名)内部クラスを使用するのは正確にいつリーク安全ですか?
私はAndroidでのメモリリークに関する記事をいくつか読んでおり、この件に関するGoogle I / Oからのこの興味深いビデオを見ました。 それでも、概念を完全には理解していません。特に、Activity内の内部クラスをユーザーが安全または危険にさらす場合はそうです。 これは私が理解したことです: 内部クラスのインスタンスが外部クラス(アクティビティ)よりも長く存続すると、メモリリークが発生します。-> どのような状況でこれが起こりますか? この例では、拡張OnClickListenerする匿名クラスがアクティビティよりも長く存続する方法がないため、リークのリスクはないと思います。 final Dialog dialog = new Dialog(this); dialog.setContentView(R.layout.dialog_generic); Button okButton = (Button) dialog.findViewById(R.id.dialog_button_ok); TextView titleTv = (TextView) dialog.findViewById(R.id.dialog_generic_title); // *** Handle button click okButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { dialog.dismiss(); } }); titleTv.setText("dialog title"); dialog.show(); さて、この例は危険ですか、なぜですか? // We are still …

5
Java-Foo型の包含インスタンスにアクセスできません
私は次のコードを持っています: class Hello { class Thing { public int size; Thing() { size = 0; } } public static void main(String[] args) { Thing thing1 = new Thing(); System.out.println("Hello, World!"); } } 私Thingは何もしないことを知っていますが、私のHello、Worldプログラムはそれなしで問題なくコンパイルできます。私で失敗しているのは、定義されたクラスだけです。 そして、それはコンパイルを拒否します。私No enclosing instance of type Hello is accessible."は新しいものを生み出す線にたどり着きます。私はどちらかを推測しています: システムレベルの問題(DrJavaまたは私のJavaインストールのいずれか)または Javaで動作するプログラムを構築する方法について、いくつかの基本的な誤解があります。 何か案は?

8
内部クラスオブジェクトから外部クラスオブジェクトを取得する
次のコードがあります。内部クラスオブジェクトの作成に使用した外部クラスオブジェクトを取得しますinner。どうすればできますか? public class OuterClass { public class InnerClass { private String name = "Peakit"; } public static void main(String[] args) { OuterClass outer = new OuterClass(); InnerClass inner = outer.new InnerClass(); // How to get the same outer object which created the inner object back? OuterClass anotherOuter = ?? ; …

4
C ++でネストされたクラスを使用するのはなぜですか?
誰かがネストされたクラスを理解して使用するためのいくつかの素晴らしいリソースに私を向けることができますか?プログラミング原則のような資料や、このIBM Knowledge Center-Nested Classesなどの資料があります。 しかし、私はまだ彼らの目的を理解するのに苦労しています。誰かが私を助けてくれませんか?

10
外部Javaクラスが内部クラスのプライベートメンバーにアクセスできるのはなぜですか?
外部クラスが内部クラスのプライベートインスタンス変数にアクセスできることを確認しました。これはどのようにして可能ですか?以下は、同じことを示すサンプルコードです。 class ABC{ class XYZ{ private int x=10; } public static void main(String... args){ ABC.XYZ xx = new ABC().new XYZ(); System.out.println("Hello :: "+xx.x); ///Why is this allowed?? } } この動作が許可されるのはなぜですか?


6
Javaで匿名の内部クラスを静的にすることは可能ですか?
Javaでは、ネストされたクラスはどちらでもよいしstatic、そうでなくてもよい。それらがstaticである場合、それらには包含インスタンスのポインターへの参照が含まれていません(これらは内部クラスとも呼ばれなくなり、ネストされたクラスと呼ばれます)。 static参照が不要なときにネストされたクラスを作成し忘れると、ガベージコレクションやエスケープ分析で問題が発生する可能性があります。 匿名の内部クラスstaticも作成できますか?または、コンパイラはこれを自動的に判断しますか(サブクラスがないため、可能です)。 たとえば、匿名コンパレータを作成する場合、外部への参照はほとんど必要ありません。 Collections.sort(list, new Comparator<String>(){ int compare(String a, String b){ return a.toUpperCase().compareTo(b.toUpperCase()); } }

4
静的メソッド内で非静的内部クラスをインスタンス化する方法は?
次のコードがあります。 public class MyClass { class Inner { int s, e, p; } public static void main(String args[]) { Inner in; } } この部分までのコードは大丈夫ですが、私のようなmainメソッド内「で」インスタンス化することはできませんよin = new Inner()、それが表示されているようnon static field cannot be referenced in static context。 どうすればよいですか?Innerクラスを静的にしたくありません。

5
内部クラスはプライベート変数にアクセスできますか?
class Outer { class Inner { public: Inner() {} void func() ; }; private: static const char* const MYCONST; int var; }; void Outer::Inner::func() { var = 1; } const char* const Outer::MYCONST = "myconst"; これは、クラスOuter :: Inner 'でコンパイルすると、「var」という名前のメンバーがいないときにエラーになります。
117 c++  inner-classes 

6
ネストされたクラスのスコープ?
Pythonのネストされたクラスのスコープを理解しようとしています。これが私のコード例です: class OuterClass: outer_var = 1 class InnerClass: inner_var = outer_var クラスの作成が完了せず、エラーが発生します。 <type 'exceptions.NameError'>: name 'outer_var' is not defined 試しinner_var = Outerclass.outer_varてもうまくいきません。私は得ます: <type 'exceptions.NameError'>: name 'OuterClass' is not defined outer_varからスタティックにアクセスしようとしていますInnerClass。 これを行う方法はありますか?

10
PHPのネストされたクラスまたは内部クラス
私は建物だユーザークラスをしかし、この時、私は少し違っそれを構築するために考えていた、私の新しいウェブサイトのための... C ++、Java、さらにはRuby(そしておそらく他のプログラミング言語)でも、メインクラス内でネストされたクラスや内部クラスを使用できるため、コードをよりオブジェクト指向で組織化することができます。 PHPでは、私はそのようなことをしたいと思います: <?php public class User { public $userid; public $username; private $password; public class UserProfile { // some code here } private class UserHistory { // some code here } } ?> PHPでそれは可能ですか?どうすれば達成できますか? 更新 それが不可能な場合、将来のPHPバージョンはネストされたクラスをサポートする可能性がありますか?
111 php  class  oop  nested  inner-classes 

12
Jacksonを使用してオブジェクトに未加工のJSONを含めるにはどうすればよいですか?
Jacksonを使用してオブジェクトが(非)シリアル化されるときに、Javaオブジェクト内に未加工のJSONを含めようとしています。この機能をテストするために、次のテストを作成しました。 public static class Pojo { public String foo; @JsonRawValue public String bar; } @Test public void test() throws JsonGenerationException, JsonMappingException, IOException { String foo = "one"; String bar = "{\"A\":false}"; Pojo pojo = new Pojo(); pojo.foo = foo; pojo.bar = bar; String json = "{\"foo\":\"" + foo + "\",\"bar\":" …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.