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

KotlinのJava静的メソッドに相当するものは何ですか?


Javaでは、効率的なメモリ管理のために「static」キーワードが使用されます。変数またはメソッドが静的として宣言されたら の場合、JVMはこれらの変数にメモリを1回だけ割り当てます。通常、静的変数は、クラスの共通のプロパティを宣言するために使用されます 、たとえば、「機関の名前」。次の例では、静的の使用方法を示します。 キーワード。

Javaを使用する際の静的な例

どのように静的であるかを示すため Javaで動作し、オンラインJavaコンパイラにアクセスし、テストを作成します クラス。 テストの内部 、 staticとともに静的変数を作成しようとします メソッドを使用すると、クラスを作成せずに両方にアクセスできます。 オブジェクト。

public class Test
{
   static int myStaticVariable = 10;
   // static method
   static void staticMethod()
   {
      System.out.println("www.tutorialspoint.com");
   }

   public static void main(String[] args)
   {

      // accessing static method and variable without creating
      // any object of class Test
      staticMethod();
      System.out.println("Accessing Static variable-"+myStaticVariable);
   }
}

出力

コードを実行すると、次の出力が生成されます-

$javac Test.java
$java -Xmx128M -Xms16M Test
www.tutorialspoint.com
Accessing Static variable-10

KotlinのJava静的メソッドに相当

Kotlinには、静的はありません。 キーワード。この記事では、Kotlinライブラリで使用可能な別のキーワードを使用して同じメモリ管理を実現する方法を学習します。目的は、別のKotlinライブラリ関数を実装して、メモリが1回だけ作成され、その値をアプリケーションの他のセクションから変更できない条件を選択することです。

静的を使用するには2つの方法があります Kotlinで-

  • コンパニオンオブジェクトの使用

  • オブジェクトクラスと@JvmStaticアノテーションの使用

これらの各方法を詳しく理解しましょう。

コンパニオンオブジェクトの使用

コンパニオンを追加する オブジェクト内で、開発者が静的を達成するのに役立ちます Kotlinの機能。クラスが格納されているのと同じファイルにオブジェクトを格納するため、クラス内のすべてのプライベートメソッドと変数にアクセスできます。クラス初期化ステージとともに初期化されます。

コンパニオンオブジェクトの実装を試み、Kotlinでメモリ管理をいかに効率的に処理できるかを確認します。

fun main(args: Array<String>) {
   // Accessing class variable and method
   //with out creating class object
   println("Hello!"+'\n' + "This an example of accessing class variable without creating object." + MyClass.staticField+'\n')
   println("Hello!"+'\n' + "This an example of accessing class Method without creating an object." + MyClass.getStaticFunction()+'\n');

}

class MyClass{
   companion object {
      val staticField = "This is a Static Variable."
      fun getStaticFunction(): String {
         return "This is a static Method."
      }
   }
}

出力

コードを実行すると、次の出力が生成されます-

Hello!
This an example of accessing class variable without creating
object. This is a Static Variable.

Hello!
This an example of accessing class Method without creating an
object. This is a static Method.

このサンプルコードでは、 staticのいずれかの値を変更しようとすると 変数の場合、Kotlinコンパイラがエラーをスローすることがわかります。

fun main(args: Array) {

   // Trying to modify the static variable

   MyClass.staticField="Hello Students";
   println("Hello!"+'\n'+"This an example of accessing class variable with out creating object-"+MyClass.staticField+'\n')

}
class MyClass{
   companion object {
      val staticField = "This is an Static Variable"
      fun getStaticFunction(): String {
         return "This is a static Method"
      }
   }
}

出力

上記のコードは次のエラーを生成します-

$kotlinc -nowarn main.kt -include-runtime -d main.jar
main.kt:5:5: error: val cannot be reassigned
MyClass.staticField="Hello Students";
^

オブジェクトクラスと@JvmStaticアノテーションの使用

Kotlinのドキュメントによると、一度 @JvmStatic アノテーションは任意の変数またはメソッドに適用され、静的として機能します そのクラスの機能。

次の例では、オブジェクトを作成します クラスとそのオブジェクト クラスでは、 @JvmStaticを使用して変数とメソッドを宣言します 静的を実装するためのアノテーション Kotlin環境での機能。

fun main(args: Array) {
   // Accessing class variable and method
   //with out creating class object
   println("Hello!"+'\n' + "This an example of accessing a class variable without creating an object." +MyClass.staticField+'\n')
   println("Hello!"+'\n' + "This an example of accessing a class Method without creating an object. " +MyClass.getStaticFunction()+'\n');

}
object MyClass{
   @JvmStatic
   val staticField = "This is a Static Variable."
   @JvmStatic
   fun getStaticFunction(): String {
      return "This is a Static Method."
   }
}

出力

結果セクションに次の出力が生成されます。 −

Hello!
This an example of accessing a class variable without creating an
object. This is a Static Variable.

Hello!
This an example of accessing a class Method without creating an
object. This is a Static Method.

  1. JavaのContainerクラスの重要性は何ですか?

    コンテナ コンテナ クラスは、コンポーネントの収集を保持できる特別なコンポーネントとして説明できます。 スイングコンテナには2つのタイプがあり、トップレベルのコンテナです。 および低レベルのコンテナ。 トップレベルのコンテナは重量級です JFrameなどのコンテナ 、Jアプレット 、 JWindow 、および JDialog 。 低レベルのコンテナは軽量です JPanelなどのコンテナ 。 最も一般的に使用されるコンテナはJFrame 、 JPanel およびJWindow 。 Containerクラスの重要なメソッドはadd()です。 、 invalidate() およびval

  2. JavaでのCardLayoutクラスの重要性は何ですか?

    CardLayoutの機能 コンポーネントを順番に配置し、1つのタイミングで1つのコンポーネントのみが表示されます e 各コンポーネントは1枚のカードとして扱われます。 CardLayout CardLayout 他のレイアウトマネージャーがコンテナ内のすべてのコンポーネントを一度に表示しようとする他のレイアウトとは異なり、 CardLayout 一度に1つのコンポーネントのみを表示します。 CardLayout 、カードは通常、 JPanelなどのコンテナに入れられます 。コンポーネントは、追加された順序でカードキューに配置されます。 CardLayoutの重要なメ