Java
 Computer >> コンピューター >  >> プログラミング >> Java

メソッドローカル内部クラスは、Javaのローカル最終変数にアクセスできますか?


はい、ローカル最終変数にアクセスできます メソッドローカル内部クラスを使用する 最終的な変数はヒープに格納されるためです メソッドローカル内部クラスである限り存続します オブジェクトが生きている可能性があります。

メソッドローカル内部クラス

  • ローカル内部クラスインスタンス 引数として配信してメソッドから取得でき、有効なスコープ内で使用できます。
  • メソッドローカル内部クラスの唯一の制限 ローカルパラメータは、最終として定義されている場合にのみ実行できます。 。
  • ローカルパラメータを実行するメソッドは、メソッドの実行後に呼び出すことができ、その中でローカル内部クラス 宣言されました。その結果、ローカルパラメータはその値を保持しなくなります。
  • ローカル内部クラスオブジェクトを作成する前に値を修正する必要があります。 必要に応じて、非最終変数を最終変数にコピーして、後でローカル内部クラスによって実行することができます。 。

class MainClassTest {
   private int x = 10;
   public void sampleMethod() {
      final int y = 20;
      class MethodLocalInnerClassTest {
         public void accessMainClassVar() {
            System.out.println(x);
            // accessing the final variable
            System.out.println(c);
         }
      }
      MainClassTest mainTest = new MethodLocalInnerClassTest();
      mainTest.accessMainClassVar();
   }
}

// Test.java
public class Test {
   public static void main(String args[]) {
      MainClassTest test = new MainClassTest();
      test.sampleMethod();
   }
}

出力

10
20

  1. JavaでinvokeLater()メソッドを呼び出すにはどうすればよいですか?

    invokeLater() メソッドは静的です SwingUtilitiesのメソッド クラスであり、タスクを非同期に実行するために使用できます。 AWT イベントディスパッチャスレッド 。 SwingUtilities.invokeLater() メソッドはSwingUtilities.invokeAndWait()のように機能します ただし、リクエストはイベントキューに配置されます そしてすぐに戻る 。 invokeLater() メソッドは、実行可能内のコードのブロックを待機しません ターゲットによって参照されます 実行します。 構文 public static void in

  2. JavaでJPanelのpaintComponent()メソッドを実装するにはどうすればよいですか?

    JPanel は軽量のコンテナであり、見えない コンポーネント Javaで。 JPanelのデフォルトのレイアウトはFlowLayout 。 JPanelを作成したら、他のコンポーネントを JPanelに追加できます。 add()を呼び出してオブジェクトを作成します コンテナから継承されたメソッド クラス。 paintComponent() このメソッドは、 JPanelで何かを描画するために必要です 背景色を描く以外。このメソッドは、 JPanelにすでに存在します スーパーを使用する必要があるようにクラス このメソッドに何かを追加し、グラフィックスを取る宣言 オブジェクト パラメータ