1. 程式人生 > >Step into Kotlin

Step into Kotlin

目錄

摘要

定義泛型,使用泛型,in 與 out,逆變與協變,集合的邊界

泛型

定義泛型

class Holder<T>(val t: T) {
    fun info() {
        println(t)
    }
}

使用泛型

var strHolder = Holder("a")
var intHolder = Holder(3)
strHolder.info()    //  a
intHolder.info()    //  3

In 和 Out

Out

引數註解 out 用於表示該泛型只能用於輸出,例如作為返回值。同時也提供了協變的特性。

abstract class Source<out T> {
    abstract fun nextT(): T
}

協變特性

fun demo(strs: Source<String>) {
    val obj: Source<Any> = strs
}

In

引數註解 in 用於表示該泛型只能用於輸入,例如作為引數。同時也提供了逆變的特性。

abstract class Comparable<in T> {
    abstract
fun compareTo(other: T): Int }

逆變特性

fun demo(x: Comparable<Number>) {
    val y: Comparable<Double> = x
}

集合的邊界

Java 中集合作為引數時可以指定邊界,Kotlin 中也有類似的做法

Array<in String>

以上類似 Java 中的 Array<? super String>

Array<out String>

以上類似 Java 中的 Array<? extend String>

相關推薦

Step into Kotlin

目錄 泛型 定義泛型 使用泛型 集合的邊界 摘要 定義泛型,使用泛型,in 與 out,逆變與協變,集合的邊界 泛型 定義泛型 class Holder<T>(val t: T) { fu

調試中的step into step over step out

使用 over back -c ng- 函數 mod track 而是 step into/step out/step over的差別 step into就是單步運行,遇到子函數就進入而且繼續單步運行; step over是在單步運行時,在函數內遇到子函數時不會

Dive Into Kotlin(四):為什麼 Kotlin 的根型別是「Any?」

本文由 Prefert 發表在 ScalaCool 團隊部落格。 我們在Dive Into Kotlin(二):Kotlin 型別結構設計中已經對Kotlin的型別系統進行過大致的介紹。 文中提到過: Any 型別是 Kotlin 中 所有非空型別(ex: String, Int) 的根型別。

pycharm 的 使用 Pycharm 斷點跳轉及 Step Over/Step Into/Step Out 等的區別

Pycharm除錯程式時,有時需要直接從第一個斷點跳轉至第二個斷點,如果還是用單步除錯的話就非常麻煩了,當然解決方法也很簡單,點選“Dubug”,當程式停在第一個斷點的時候,點選選單欄的Run-> Resume Program即可跳轉至第二個斷點。   另外我們在除錯的時候經常會用到這幾個

Step Into My Memory Palace

Step Into My Memory PalaceIf you’re like me, you have trouble remembering things from time to time, or if you are a lot like me, pretty much all the time.

IDE Eclipse / Visual Studio / CodeBlocks 除錯命令 step into / step over / step return 功能

  step into:單步除錯,就像它的名字 into 一樣,遇到函式 / 方法會跳入函式內部執行。除錯時如果不是想要了解函式內部的細節慎用這個功能。 step over:這個也是單步除錯,遇到函式 / 方法 不會進入該函式內部執行。可以用於瞭解程式的大概執行思路。

VS2015+QT5.9.5除錯進QT原始碼的環境搭建【Debugging QT——Step into QT source code】

VS2015+QT5.9.5編譯環境的搭建方法,網上文章一大堆,小編就不贅述了,這裡重點講一下通常在VS下使用開源庫(如QT/Opencv等)除錯環境的搭建方法。能夠在除錯軟體的時候,除錯進入諸如QT等開源庫的原始碼自然更有助於學習開源庫的內部機制以及發現軟體開發時的深層次b

LeetCode之Insert into a Binary Search Tree(Kotlin

問題: Given the root node of a binary search tree (BST) and a value to be inserted into the tree, inse

Kotlin DSL to write Gradle scripts on Android: Step by step walkthrough

There’s been quite some months already since Gradle announced that they were working on supporting Kotlin to write Gradle Scripts, by using a version

Step By Step(Lua目錄)

處理 叠代 類型 引用 持久化 系統 for 聲明 錯誤處理 Step By Step(Lua開篇)http://www.cnblogs.com/stephen-liu74/archive/2012/03/17/2403210.html一、簡介二、主要優勢三、應用場景Ste

kylin build cube #3 Step Name: Extract Fact Table Distinct Columns

kylin build cubejava.lang.NoSuchMethodError: org.apache.hadoop.yarn.proto.YarnProtos$LocalResourceProto.hashLong(J)I at org.apache.hadoop.yarn.proto.YarnP

C# LINQ 詳解 From Where Select Group Into OrderBy Let Join

分享 str 關聯 例如 數據 lln ole inf emp 目錄 1. 概述 2. from子句 3. where子句 4. select子句 5. group子句 6. into子句 7. 排序子句 8. let子句 9. join子句 10. 小結 1. 概述

用Anko和Kotlin實現Android上的對話框和警告提示(KAD 24)

posit eve linear 免費 clas testing size uil 如何 作者:Antonio Leiva 時間:Mar 9, 2017 原文鏈接:https://antonioleiva.com/dialogs-android-anko-kotlin/

select into 和insert into select

rim database ble spa ins data weight font insert select into:   創建測試語句 create database MyDemoTest go use MyDemoTest go create table A (

Hello Kotlin! Kotlin教程學習資料

title 下午 學習android one 中文版 資料 evel 應該 ans 今天谷歌搞了條大新聞。宣布Kotlin成為android開發的一級(One Class)語言,這說明谷歌是被甲骨文惡心壞了,打算一步步脫離掉java或者說是甲骨文公司的束縛了。原先網上大家還

[LintCode] 599 Insert into a Cyclic Sorted List 解題報告

blog same ted next rom list ron div ger DescriptionGiven a node from a cyclic linked list which has been sorted, write a function to inse

kotlin 語法

oncreate over listener rac ner mil final類 kotlin col 轉載請表明 https://i.cnblogs.com/EditPosts.aspx?opt=1 1.extends 用 (冐號):代替。MainActivity e

kotlin, 一種新的android平臺一級開發語言

程序 16px 語法 jvm ava lin 使用 ide 擁有 最近看到一則科技新聞, 大致內容是google將kotlin語言作為android應用開發的一級語言, 與java並駕齊驅, 這是一個開發界的大事件大新聞, 連google的親兒子go語言也沒有這

kotlin基礎語法

映射 lambda white start 轉換 檢查 posit was tom 1. 包定義 package package my.demo2. 方法定義 fun fun sum(a: Int, b: Int): Int {//定義方法的關鍵字fun;方法名sum;變

如何看待 Kotlin 成為 Android 官方支持開發語言

效率 syntax dia 我們 int 得到 ges dynamic 明顯 Google IO 2017宣布了 Kotlin 會成為 Android 官方開發語言。一時間朋友圈和Android圈被各種刷屏。當然我也順勢而為發布了一篇的文章《為什麽我要改用Kotlin》,著