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.
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
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.
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".
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.)
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.
Wir suchen Freunde, die Kotlin, Swift, Rails und Python gemeinsam bei Atlae schreiben! https://www.green-japan.com/company/172
Recommended Posts