[JAVA] Toucher Kotlin pour la première fois-Enum Classes

Aperçu

Contenu

Définition de base identique à Java

enum class Weather {
  SUNNY, CLOUDY, RAINY
}

Initialisation - contrairement à java

enum class Weather(val weather: String) {
  SUNNY("sunny"),
  CLOUDY("cloudy"),
  RAINY("rainy")
}

nom et original - identiques à java

println(Weather.CLOUDY.name) // CLOUNDY
println(Weather.CLOUDY.ordinal) // 1

valueOf () et values () - identiques à java

println(Weather.valueOf("sunny".toUpperCase())) // SUNNY
for (weather: Weather in Weather.values()) {
  println(weather.name) // SUNNY CLOUDY RAINY
}

enumValues et enumValueOf () - Contrairement à java

println(enumValueOf<Weather>("sunny".toUpperCase())) // SUNNY
print(enumValues<Weather>().joinToString { it.name }) // SUNNY, CLOUDY, RAINY

Chaque constante Enum peut également déclarer sa propre classe anonyme, contrairement à Java

Réalisé avec kotlin
fun main(args: Array<String>) {
    println(Weather.SUNNY.washingIndexName()) //Très sec
    println(Weather.SUNNY.washingIndex()) // 5
}

enum class Weather(val weather: String) {
  CLOUDY("cloudy"){
      override fun washingIndex() = 3
      override fun washingIndexName() = "Sec"
  },
  RAINY("rainy"){
      override fun washingIndex() = 1
      override fun washingIndexName() = "Séchage en pièce recommandé"
  },
  SUNNY("sunny"){
      override fun washingIndex() = 5
      override fun washingIndexName() = "Très sec"
  };
  
  abstract fun washingIndex(): Int
  abstract fun washingIndexName(): String
}

Confirmation du code: https://paiza.io/projects/DANyJNSE2ziwn6fqbmLzoQ

Main.kt:19:4: error: expecting ';' after the last enum entry or '}' to close enum class body
  }
Réalisé avec java
import java.util.*;

enum Weather {
    SUNNY("sunny", 5, "Très sec"),
    CLOUDY("cloudy", 3, "Sec"),
    RAINY("rainy", 1, "Séchage en pièce recommandé");
    
    private String value;
    private int index;
    private String name;
    
    Weather(String value, int index, String name) {
        this.value = value;
        this.index = index;
        this.name = name;
    }
    
    public String getValue() {
        return this.value;
    }
    
    public static int getWashingIndex(Weather weather) {
        for(Weather e : Weather.values()) {
            if (weather == e) {
                return e.index;
            }
        }
        return 0;
    }
    
        public static String getWashingIndexName(Weather weather) {
        for(Weather e : Weather.values()) {
            if (weather == e) {
                return e.name;
            }
        }
        return "Aucun";
    }
}

public class Main {
    public static void main(String[] args) throws Exception {
        System.out.println(Weather.getWashingIndexName(Weather.SUNNY)); //Très sec
        System.out.println(Weather.getWashingIndex(Weather.SUNNY)); // 5
    }
}

Confirmation du code: https://paiza.io/projects/DANyJNSE2ziwn6fqbmLzoQ

Fonction d'extension

fun Weather.umbrellaIndex(){
    val index = when(this){
        Weather.SUNNY -> 0
        Weather.CLOUDY -> 1
        Weather.RAINY -> 2
    }
    println(index)
}

fun main(args: Array<String>) {
    Weather.RAINY.umbrellaIndex(); // 2
}

référence

Recommended Posts

Toucher Kotlin pour la première fois-Enum Classes
J'ai essayé de toucher Docker pour la première fois
Comment étudier le kotlin pour la première fois ~ Partie 2 ~
Comment étudier le kotlin pour la première fois ~ Partie 1 ~
Spring AOP pour la première fois
Introduction à Java pour la première fois # 2
Apprendre pour la première fois java [Introduction]
Murs touchés par le premier Rspec
Développement d'Android Studio pour la première fois (pour les débutants)
Apprentissage pour la première fois des expressions et opérateurs Java # 3
[Premier message] Affiche le mot Épuisé pour les produits vendus
Mémo d'apprentissage lors de l'apprentissage de Java pour la première fois (mémo d'apprentissage personnel)
Résumé des points que les programmeurs Java trouvent glissants lorsqu'ils lisent la source Kotlin pour la première fois
[Rails] J'ai essayé d'utiliser la méthode button_to pour la première fois
Procédure de publication d'applications Android adaptée aux débutants, en difficulté pour la première version first
Modéliser Digimon avec DDD pour la première fois Partie 1
Causes techniques et contre-mesures pour les points auxquels j'étais accro avec la première application Android et Kotlin