Maison développement back-end Tutoriel C#.Net Explication détaillée de la façon d'implémenter des méthodes statiques dans Kotlin similaires à Java ou C#

Explication détaillée de la façon d'implémenter des méthodes statiques dans Kotlin similaires à Java ou C#

Jun 04, 2017 am 09:41 AM

Comment implémenter des méthodes

statiques dans Kotlin similaires à Java ou C# Cet article résume plusieurs méthodes, à savoir : la fonction au niveau du package , le compagnon Object, fonctions d'extension et déclarations d'objet. Cela oblige chacun à choisir en fonction de différentes situations.

Vous pouvez trouver de nombreux articles de ce type sur Internet. La recommandation officielle concerne les fonctions au niveau du package, et certaines personnes disent d'utiliser des objets compagnons (compagnon

class). Ce sont de bonnes options, mais elles ne sont pas parfaites, et nous disposons de meilleures options dans différentes situations. J'ai résumé plusieurs méthodes, à savoir : les fonctions au niveau du package, les objets compagnons, les fonctions d'extension et les déclarations d'objets. Cela oblige chacun à choisir en fonction de différentes situations.

1. Fonctions au niveau du package

La différence entre Kotlin et Java et C# est que vous pouvez directement

déclarer des fonctions dans le emballer. La méthode est la même que dans la catégorie, je ne rentrerai donc pas dans les détails ici. C’est effectivement un très bon choix. Il convient aux méthodes où les fonctions n'ont pas besoin d'inclure des classes internes pour le partage de données.

2. Objet compagnon

Sémantiquement parlant, les fonctions compagnon sont très similaires aux méthodes statiques en Java, de sorte que les objets compagnon peuvent complètement implémenter des méthodes statiques en Java. Tous contenu de la classe. Mais utiliser des méthodes statiques en Java n’est parfois pas un choix. Dans Kotlin, les objets compagnons ne sont qu’une de nos options. Ensuite, je présenterai les objets compagnons.

Avez-vous déjà remarqué lorsque vous utilisez Java ? Quand les
variables statiques et les méthodes des classes Java sont-elles initialisées ? Est-ce lorsque la méthode statique est appelée pour la première fois ou lorsque la classe Java correspondante est chargée ? La réponse est lorsque la classe Java est chargée (c'est-à-dire que si vous avez appelé les variables d'instance et les méthodes dans la classe Java, même si vous n'avez pas utilisé de variables et de méthodes statiques, les variables statiques ont été initialisées). N’est-il pas approprié de qualifier ce phénomène d’accompagnant ?

Dans Kotlin, on considère qu'il existe deux types de choses dans une classe, l'un est constitué de variables d'instance et de méthodes dans les classes Java, et l'autre est de variables et de méthodes statiques dans les classes Java. Kotlin regroupe les instances et méthodes statiques dans une classe compagnon, et voilà à quoi cela ressemble. Un exemple est donné ci-dessous :

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)}
    }
  }
}
Copier après la connexion
La classe compagnon est déclarée avec compagnon. Elle est chargée dans la classe où se trouve l'objet compagnon, et l'objet compagnon est initialisé, tout comme les membres statiques Java. Elle peut être anonyme ou porter le même nom que la classe conteneur. Il existe deux types d'appels :

ou Books.ComBooks.getBestSellsers()?Books.getBestSellsers()?。

3. Fonction d'extension

En Java, on écrit souvent des classes Utils , ces classes effectuent souvent des opérations sur un certain objet qui correspondent à ses fonctions et à leurs propres programmes. La plupart des méthodes sont des méthodes statiques, par exemple :

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;
  }
}
Copier après la connexion
Bien sûr, nous pouvons utiliser les deux méthodes ci-dessus pour implémenter ces méthodes statiques, mais nous avons une meilleure méthode.

fun String.isEmpty() = this != null && this.length == 0;

fun String.isWeakEmpty()= this.isEmpty() && this.trim().length == 0
Copier après la connexion
Les deux lignes de code ci-dessus étendent la classe String avec deux fonctions. Ces deux fonctions peuvent être appelées comme leurs fonctions natives. Le code est très beau. En fait, la fonction d'extension ne modifie pas le contenu interne de la classe String et n'ajoute que deux fonctions statiques à String. Cependant, par rapport à la classe Utils de Java, la lisibilité a été grandement améliorée.


4. Déclaration d'objet

Continuez à considérer la classe Utils ci-dessus. Toutes les méthodes (et parfois les variables) de cette classe sont statiques, ceci. La méthode n'a pas du tout besoin d'être instanciée. En Java, nous déclarons souvent ce type comme une classe statique. Existe-t-il une bonne solution à cette situation dans Kotlin ? Existe-t-il une meilleure solution que les objets compagnons ? Bien sûr, la déclaration d’objet en est une.


La déclaration d'objet est très facile à comprendre. Elle utilise le mot-clé object pour déclarer un objet. Des variables et des méthodes peuvent être utilisées dans l'objet, telles que :

object AppInfo{
  var AppName = "Kotlin Message"
  var AppAuthor = "Riley Ge"
  fun toSimpleString() {
    println("AppName:$AppName,AppAuthor:$AppAuthor") 
  }
}
Copier après la connexion
Découvrir. Objets Kotlin Quelle puissance ! Une chose à laquelle tout le monde devrait prêter attention est qu'AppInfo est initialisé paresseusement lors du premier accès, ce qui signifie qu'AppInfo n'est pas initialisé lorsque l'objet est déclaré.


5. Résumé

Après avoir parlé de tant de méthodes, personne ne s'inquiète du fait que Kotlin n'ait pas de méthodes statiques maintenant, n'est-ce pas ? Je ne l'ai pas juste à cause de lui. Je peux faire mieux. De plus, Kotlin vous offre également plus de choix. Vous pouvez choisir la méthode appropriée en fonction de votre situation réelle pour rendre votre code efficace et beau.


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Active Directory avec C# Active Directory avec C# Sep 03, 2024 pm 03:33 PM

Guide d'Active Directory avec C#. Nous discutons ici de l'introduction et du fonctionnement d'Active Directory en C# ainsi que de la syntaxe et de l'exemple.

Générateur de nombres aléatoires en C# Générateur de nombres aléatoires en C# Sep 03, 2024 pm 03:34 PM

Guide du générateur de nombres aléatoires en C#. Nous discutons ici du fonctionnement du générateur de nombres aléatoires, du concept de nombres pseudo-aléatoires et sécurisés.

Vue Grille de données C# Vue Grille de données C# Sep 03, 2024 pm 03:32 PM

Guide de la vue Grille de données C#. Nous discutons ici des exemples de la façon dont une vue de grille de données peut être chargée et exportée à partir de la base de données SQL ou d'un fichier Excel.

Modèles en C# Modèles en C# Sep 03, 2024 pm 03:33 PM

Guide des modèles en C#. Nous discutons ici de l'introduction et des 3 principaux types de modèles en C# ainsi que de ses exemples et de l'implémentation du code.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Services Web en C# Services Web en C# Sep 03, 2024 pm 03:32 PM

Guide des services Web en C#. Nous discutons ici d'une introduction aux services Web en C# avec l'utilisation de la technologie, ses limitations et des exemples.

Nombres premiers en C# Nombres premiers en C# Sep 03, 2024 pm 03:35 PM

Guide des nombres premiers en C#. Nous discutons ici de l'introduction et des exemples de nombres premiers en c# ainsi que de l'implémentation du code.

Java Made Simple : un guide du débutant sur la puissance de programmation Java Made Simple : un guide du débutant sur la puissance de programmation Oct 11, 2024 pm 06:30 PM

Java Made Simple : Guide du débutant sur la puissance de programmation Introduction Java est un langage de programmation puissant utilisé dans tout, des applications mobiles aux systèmes d'entreprise. Pour les débutants, la syntaxe de Java est simple et facile à comprendre, ce qui en fait un choix idéal pour apprendre la programmation. Syntaxe de base Java utilise un paradigme de programmation orienté objet basé sur les classes. Les classes sont des modèles qui organisent ensemble les données et les comportements associés. Voici un exemple simple de classe Java : publicclassPerson{privateStringname;privateintage;

See all articles