티스토리 뷰
T : 별도의 Wildcard 정의가 없이 read/write 모두 가능
in T : Java 의 ? super T 와 같음. input 의 약자이며 write 만 가능
out T : Java 의 ? extends T 와 같음. output 의 약자이며 read 만 가능
User.kt
package com.jwsoft.kotlinproject
class User<S, I> (
var name: S,
var age: I
)
MainActivity.kt
package com.jwsoft.kotlinproject
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val users: ArrayList<User<String, Int>> = ArrayList()
users.add(User("James Kim", 30))
showUsers(users)
}
fun showUsers(users: ArrayList<User<String, Int>> ) {
users.add(User("Kevin Jang", 27))
for (i in 0 until users.size) {
Log.e("name", users[i].name)
Log.e("age", users[i].age.toString())
}
}
}
MainActivity.kt
package com.jwsoft.kotlinproject
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val users: ArrayList<User<String, Int>> = ArrayList()
users.add(User("James Kim", 30))
showUsers(users)
}
fun showUsers(users: ArrayList<out User<String, Int>> ) {
users.add(User("Kevin Jang", 27))
for (i in 0 until users.size) {
Log.e("name", users[i].name)
Log.e("age", users[i].age.toString())
}
}
}
out 사용 시 읽기만 가능
MainActivity.kt
package com.jwsoft.kotlinproject
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val users: ArrayList<User<String, Int>> = ArrayList()
users.add(User("James Kim", 30))
showUsers(users)
}
fun showUsers(users: ArrayList<in User<String, Int>> ) {
users.add(User("Kevin Jang", 27))
for (i in 0 until users.size) {
Log.e("name", users[i].name)
Log.e("age", users[i].age.toString())
}
}
}
in 사용 시 쓰기만 가능
참고
thdev.tech/kotlin/androiddev/2017/10/03/Kotlin-Generics/
'Android > Kotlin' 카테고리의 다른 글
[Kotlin] BuildConfig (0) | 2020.08.07 |
---|---|
[Kotlin] enum (0) | 2020.08.07 |
[Kotlin] Toolbar + include (0) | 2020.08.05 |
[Kotlin] ImageView 타원화 (0) | 2020.08.04 |
[Kotlin] CoordinatorLayout + ViewPager2 + TabLayout (0) | 2020.08.03 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Android
- Architecture Pattern
- XML
- View
- CoordinatorLayout
- 혀가 길지 않은 개발자
- JSONArray
- fragment
- ArrayList
- 자바
- 코틀린
- 안드로이드 #코틀린 #Android #Kotlin
- ViewPager2
- coroutine
- handler
- ViewModel
- java
- Livedata
- TabLayout
- Intent
- activity
- recyclerview
- Vue.js #Vue.js + javascript
- Design Pattern
- Kotlin
- JSONObject
- James Kim
- MVVM
- DataBinding
- 안드로이드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함