Woran ich dachte, als ich anfing, von Java nach Kotlin zu migrieren

Begann Kotlin zu schreiben

Ich habe bisher von der Firma in Java entwickelte Android-Apps geschrieben, aber mit der offiziellen Unterstützung von Android Studio 3.0 Release = Kotlin Ende Oktober habe ich mich entschieden, Kotlin zur Implementierung des neuen Entwicklungsteils zu verwenden. Außerdem wird der vorhandene Implementierungsteil nach Bedarf nach und nach neu geschrieben (auch für die Praxis).

Also habe ich es seit einem Monat nicht mehr benutzt, aber ich werde darüber schreiben, was ich fühlte, als ich Kotlin schrieb.

Vielen Dank für die Existenz der Option

Es ist nicht nötig, es erneut zu schreiben, aber das werde ich erwähnen.
Im Vergleich zu Swift, das auch beim Schreiben nativer Apps verwendet wird, war ich besorgt, dass ich schreiben musste, während ich auf das Auftreten von Schleim achtete, aber dies wurde behoben. Selbst in Java können Sie dies natürlich vermeiden, indem Sie Null aktivieren oder "Optional.ofNullable" verwenden, aber es war gut, eine Welt zu haben, in der Nullable und NotNull klar voneinander getrennt sind.

Ich schreibe gerne Swifts "Wache" wie mit dem Elvis-Operator.

sample.kt


val str: String = optionalStr ?: return

Um die Güte der Option nicht zu löschen, ist auch auf der Java-Seite Vorsicht geboten

Wenn es sich um ein Projekt handelt, in dem Java und Kotlin gemischt sind, gibt es natürlich Fälle, in denen Kotlin Java-Code aufruft. Wenn Sie in einem solchen Fall eine Anmerkung auf der Java-Seite hinzufügen, werden die optionalen Einschränkungen in Kotlin wirksam.

Angenommen, Sie haben den folgenden Code auf der Java-Seite.

AppUtil.java


public class AppUtil {
    public static String getVersion() {
        return "1.0";
    }
}

Beim Aufruf von der Kotlin-Seite ist der Rückgabewert von "AppUtil.getVersion ()" "String!" Und sowohl "String" als auch "String?". Wenn Sie versehentlich eingeben, auch wenn es null ist, kehren Sie in die schleimige Ära zurück. Dies verliert seinen Charakter, also fügen Sie der Methode auf der Java-Seite die Annotation @ NonNull oder @ Nullable hinzu. Die IDE schließt nun, dass der Rückgabetyp "String" oder "String?" Ist.

Erweiterung ist bequem

Sie können neue Methoden und Eigenschaften in vorhandenen Klassen erstellen. Als ich in Java schrieb, war es unpraktisch, dies im Vergleich zu Swift nicht zu haben. (Um dies zu erreichen, gab es einige statische Methoden von Klassen wie HogeUtil)

Extension.kt


fun Button.disableTouch() {
    alpha = 0.5f
    isEnabled = false
}

Das Obige ist ein Beispiel für das Hinzufügen einer Methode zu "android.widget.Button".

Statische Methoden und statische Variablen in Java usw.

Die statischen Methoden und Eigenschaften, die ich oft benutze, existieren in Kotlin nicht. Wenn Sie beispielsweise eine Factory-Methode wie "public static HogeFragment newInstance (...) {...}" ausdrücken möchten, die ich normalerweise in die Fragmentdatei geschrieben habe, verwenden Sie Companion Object als eine der Lösungen. Da ist eine Hand.

HogeFragment.kt


class HogeFragment : Fragment() {
    companion object {
        fun newInstance(...): HogeFragment {
            ...
        }
    }
}

HogeFragment.kt


companion object {
    @JvmStatic
    fun newInstance(...): HogeFragment {
        ...
    }
}

Andererseits können Sie zum Ausdrücken statischer Methoden auch die Funktionen der obersten Ebene der Datei verwenden.

HogeFragment.kt


fun topLevelFun(...) {
    ...
}
 
class HogeFragment : Fragment() {
    ...
}

Ich habe mich gefragt, ob die frühere Methode (die mit Companion Object) in Ordnung ist, da sie auf die gleiche Weise wie in Java aufgerufen werden kann und Sie sich keine Gedanken über Namenskonflikte machen müssen. Allerdings habe ich kürzlich die folgenden Blogs usw. gelesen und irgendwie mit einem Bild gelernt, wie man sie richtig benutzt. companion object vs. top-level - hydrakecat’s blog

Gleiches gilt für statische Variablen, die in einem Companion-Objekt oder auf oberster Ebene deklariert werden können. (Wenn Sie erstere "@ JvmField" hinzufügen, können Sie es auf dieselbe Weise wie in Java aufrufen.)

Ende

Also habe ich noch nicht angefangen, es zu benutzen, aber ich habe ein wenig darüber geschrieben, was ich fühlte, als ich Kotlin schrieb.
Zusätzlich zu dem, was ich oben geschrieben habe, bin ich auch froh, dass es Swift ähnelt und weniger Code als Java enthält. Ich denke, es kann auf der Serverseite verwendet werden.

[PR] Auf der Suche nach Freunden

Wir suchen Freunde, die Kotlin, Swift, Rails und Python gemeinsam bei Atlae schreiben! https://www.green-japan.com/company/172

Recommended Posts

Woran ich dachte, als ich anfing, von Java nach Kotlin zu migrieren
Zusammenfassung der Punkte, über die ich mir bei der Migration von Java nach Kotlin Sorgen gemacht habe
Was ich getan habe, als ich Java zu Kotlin konvertiert habe
Vorsichtsmaßnahmen bei der Migration von VB6.0 auf JAVA
Was ich dachte, als ich anfing, als Ingenieur zu arbeiten
Was ich über Java 6 recherchiert habe
Was ich über Java 9 recherchiert habe
Was ich über Java 7 recherchiert habe
Was ich über Kotlin gelernt habe
Was ich über Java 5 recherchiert habe
Schreiben und Notizen bei der Migration von VB zu JAVA
ClassCastException tritt bei der Migration von Java7 auf Java8 auf. ~ Generics and overload ~
Was ich über Java-Lernen recherchiert habe
Hinweise zum Erstellen der Kotlin-Entwicklungsumgebung und zur Migration von Java nach Kotlin
Änderungen bei der Migration von Spring Boot 1.5 auf Spring Boot 2.0
Änderungen bei der Migration von Spring Boot 2.0 zu Spring Boot 2.2
Was ich aus der Java-Geldberechnung gelernt habe
Memo für die Migration von Java nach Kotlin
Was ich dachte, als ich den Eingabewert des Benutzers an die Service-Klasse übergab
R von Java ausführen Ich möchte rJava ausführen
Migrieren Sie von Java zu Server Side Kotlin + Spring-Boot
Erste Schritte mit Kotlin zum Senden an Java-Entwickler
Ich möchte schnell von Java nach SQLite schreiben
Was Java-Unerfahrene getan haben, um Kotlin zu studieren
Änderungen von Java 8 zu Java 11
Summe von Java_1 bis 100
[Java] Ich möchte die Differenz zum Datum berechnen
Verhalten beim Aufrufen von Java-Argumentmethoden mit variabler Länge aus Scala / Kotlin / Java
Von Java zu Ruby !!
Was ich beim Erstellen eines Servers in Java gelernt habe
Ich möchte Bildschirmübergänge mit Kotlin und Java machen!
Ich habe versucht herauszufinden, was sich in Java 9 geändert hat
Als ich jetzt ansible + docker gestartet habe, bin ich von Anfang an gestolpert, aber ich habe es geschafft, es zu starten
11 Artikel Ich weiß nicht, ob es gut ist, etwas über JAVA zu wissen
Wovon ich bei der Einführung der JNI-Bibliothek süchtig war
[JDBC] Ich habe versucht, von Java aus auf die SQLite3-Datenbank zuzugreifen.
Ich habe versucht, die Grundlagen von Kotlin und Java zusammenzufassen
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Funktion mit Kotlin und Java erstellen!
[Opensaml] NoClassDefFoundError tritt auf, wenn von Tomcat zu Weblogic gewechselt wird
Ich möchte verschiedene Funktionen mit Kotlin und Java implementieren!
Hinweise zum Zeichencode bei der Migration von Windows auf Mac
Über Smart Cast im Rückruf von Fragment zu Aktivität in Kotlin
[Java] Ich habe über die Vorzüge und Verwendungen von "Schnittstelle" nachgedacht.
Migration von Cobol nach JAVA
Neue Funktionen von Java7 bis Java8
Stellen Sie eine Verbindung von Java zu PostgreSQL her
[Swift] Ich dachte über Vergleiche nach
Von ineffektivem Java zu effektivem Java
Wie gehe ich mit dem Typ um, den ich 2 Jahre lang über das Schreiben eines Java-Programms nachgedacht habe?
[Anmerkung] Was ich in einem halben Jahr von unerfahrenen (Java) gelernt habe
[Anmerkung] Was ich in einem halben Jahr von unerfahrenen (Java) gelernt habe (1)
Ich habe versucht, die Fehlermeldung beim Ausführen von Eclipse (Java) zu übersetzen.
Wovon ich süchtig war, als ich die Google-Authentifizierung mit Rails implementierte
[Anmerkung] Was ich in einem halben Jahr von unerfahrenen (Java) gelernt habe (3)
Was ich aus Java gelernt habe, funktioniert mit Visual Studio Code