티스토리 뷰

Android/Kotlin

[Kotlin]  Generics

혀가 길지 않은 개발자 2020. 7. 27. 12:44

GenericTypeClass.kt

package com.jwsoft.kotlinproject

class GenericTypeClass<T> (var t: T)

 

 

 

 

 

 

 

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)

        var genericString: GenericTypeClass<String> = GenericTypeClass("James Kim")
        Log.e("generic String : ", genericString.t)

        var genericInt: GenericTypeClass<Int> = GenericTypeClass(30)
        Log.e("generic Int : ", genericInt.t.toString())
    }

}

실행 결과

 

 

 

 

 

 

 

 


ConvertInterface.kt

package com.jwsoft.kotlinproject

interface ConvertInterface<S, I> {

    fun convertToInt(s: S): I
    fun convertToString(i: I): S

}

 

 

 

 

 

 

 

 

ConvertClass.kt

package com.jwsoft.kotlinproject

class ConvertClass : ConvertInterface<String, Int> {

    override fun convertToInt(s: String): Int {
        return s.toInt()
    }

    override fun convertToString(i: Int): String {
        return i.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)

        var convert: ConvertInterface<String, Int> = ConvertClass()

        Log.e("convert To String : ", convert.convertToString(30))
        Log.e("convert To Int : ", convert.convertToInt("30").toString())
    }

}

실행 결과

 

 

 

 

 

 

 


JamesClass.kt

package com.jwsoft.kotlinproject

class JamesClass {

    companion object {
        fun <T> addListItem(list: MutableList<T>, item: T): List<T> {
            list.add(item)
            return list
        }
    }

}

 

 

 

 

 

 

 

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)

        var list: MutableList<String> = ArrayList()
        list.add("A")

        for (i in 0 until list.size) {
            Log.e("Before", list[i])
        }

        JamesClass.addListItem(list, "B")
        JamesClass.addListItem(list, "C")

        for (i in 0 until list.size) {
            Log.e("After", list[i])
        }
    }
    
}

실행 결과

 

 

 

 

 

 

 

 


WildCardClass.kt

package com.jwsoft.kotlinproject

import java.util.*

class WildCardClass {

    companion object {
        fun getObjectArrayList(): List<Any> {
            return ArrayList()
        }
    }

}

 

 

 

 

 

 

 

 

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)

        var listString: ArrayList<String> = WildCardClass.getObjectArrayList() as ArrayList<String>
        var listInt: ArrayList<Int> = WildCardClass.getObjectArrayList() as ArrayList<Int>

        listString.add("30")
        listInt.add(30)

        Log.e("listString : ", listString.get(0))
        Log.e("listInt : ", listInt.get(0).toString())
    }

}

실행 결과

 

 

 

 

'Android > Kotlin' 카테고리의 다른 글

[Kotlin]  Thread.join()  (0) 2020.07.27
[Kotlin]  Synchronized  (0) 2020.07.27
[Kotlin]  Coroutine (1)  (0) 2020.07.23
[Kotlin]  MVVM  (0) 2020.07.21
[Kotlin]  RecyclerView  +  ItemClickListener  +  ItemLongClickListener  (0) 2020.07.21
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함