Java や C# に似た Kotlin で static メソッドを実装するにはどうすればよいですか? この記事では、パッケージ レベルの 関数、コンパニオン オブジェクト
、拡張関数、オブジェクト宣言などのいくつかのメソッドを要約します。これには、誰もがさまざまな状況に応じて選択する必要があります。そのような記事はインターネット上でたくさん見つかります。公式の推奨はパッケージレベルの関数であり、コンパニオンオブジェクト (コンパニオンクラス
) を使用するという人もいます。これらは良い選択肢ですが、完璧ではなく、さまざまな状況でより良い選択肢があります。パッケージレベル関数、コンパニオンオブジェクト、拡張関数、オブジェクト宣言といったいくつかのメソッドをまとめました。これには、誰もがさまざまな状況に応じて選択する必要があります。1. パッケージレベルの関数
Kotlin と Java および C# の違いは、パッケージ内で直接 関数を宣言
できることです。方法はカテゴリと同じなので、ここでは詳しく説明しません。これは確かに非常に良い選択です。これは、関数にデータ共有のための内部クラスを含める必要がないメソッドに適しています。 2. コンパニオン オブジェクト
意味的に言えば、コンパニオン関数は Java の静的メソッドに最も似ているため、コンパニオン オブジェクトは Java の静的クラスのすべての内容を完全に実装できます。ただし、Kotlin では、コンパニオン オブジェクトはオプションの 1 つにすぎず、Java で静的メソッドを使用することは選択の余地がない場合があります。次にコンパニオンオブジェクトを紹介します。 Java を使用するときに、Java クラスの静的な 変数
メソッドがいつ初期化されるかに気づきましたか?静的メソッドが最初に呼び出されたときですか、それとも対応する Java クラスがロードされたときですか?答えは、Java クラスがロードされるときです (つまり、静的変数とメソッドを使用していなくても、Java クラスでインスタンス変数とメソッドを呼び出した場合、静的変数は初期化されています)。この現象は付随するものと表現するのが適切ではないでしょうか。
fun main(args: Array<String>) { Books.getBestSellers() } class Books(var name: String, val page: Int) { fun getWordCount()=page*100 companion object ComBooks{ var bestSellers=arrayOf("Harry Potter\r\t","Lord of the Rings\r\t") fun getBestSellers() { bestSellers.forEach{v->println(v)} } } }
Books.ComBooks.getBestSellsers()?
或 Books.getBestSellsers()?。
コンパニオン クラスは、Companion を使用して宣言され、コンパニオン オブジェクトが配置されているクラスにロードされ、Java の静的メンバーと同様に初期化されます。匿名にすることも、包含クラスと同じ名前にすることもできます。呼び出しには次の 2 種類があります: 3. 拡張関数
public class Utils { public static boolean isEmpty(String string){ return string != null && string.length() == 0; } public static boolean isWeakEmpty(String string){ return isEmpty(string) && string.trim().length() == 0; } }
fun String.isEmpty() = this != null && this.length == 0; fun String.isWeakEmpty()= this.isEmpty() && this.trim().length == 0
4. オブジェクト宣言
このクラスのすべてのメソッド (場合によっては変数もある) は静的です。Java では、このメソッドをインスタンス化する必要はまったくありません。このカテゴリを静的クラスとして宣言することがよくあります。Kotlin でこの状況に対する適切な解決策はありますか?コンパニオン オブジェクトよりも優れたソリューションはありますか?もちろんあります。オブジェクト宣言は 1 つです。
5. まとめ
以上がJava や C# と同様に Kotlin で静的メソッドを実装する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。