⚡ Encapsule record

General

In Android Tip

💡 Data class / POJO 비교 글 → 링크

⚡ Encapsule collection

General

In Android Tip

fun main() {
    val testCase = TestClass(testCases = listOf("haha" to 1, "nana" to 2))
    // testCase.testCases.add("dada" to 3) -> 컴파일 에러 !

    val mutableTestCase = MutableTestClass(testCases = mutableListOf("haha" to 1, "nana" to 2))
    mutableTestCase.testCases.add("dada" to 3)

    val encapsulatedMutableTestCase = EncapsulatedTestClass(mutableListOf("haha" to 1, "nana" to 2))
    // encapsulatedMutableTestCase.testCases.add("dada" to 3) -> 컴파일 에러 !
    encapsulatedMutableTestCase.addTestCase("dada" to 3)
    // encapsulatedMutableTestCase.getTestCasesList().add("dada" to 3) -> 컴파일 에러 !

    println(testCase) // TestClass(testCases=[(haha, 1), (nana, 2)])
    println(mutableTestCase) // MutableTestClass(testCases=[(haha, 1), (nana, 2), (dada, 3)])
    println(encapsulatedMutableTestCase) // EncapsulatedTestClass(_testCases=[(haha, 1), (nana, 2), (dada, 3)])
}

data class TestClass(val testCases: List<Pair<String, Int>>)

data class MutableTestClass(val testCases: MutableList<Pair<String, Int>>)

data class EncapsulatedTestClass(private val _testCases: MutableList<Pair<String, Int>>) {
    fun addTestCase(data: Pair<String, Int>) {
        _testCases.add(data)
    }

    fun removeTestCase(data: Pair<String, Int>) {
        _testCases.remove(data)
    }

    fun getTestCasesList(): List<Pair<String, Int>> {
        return _testCases
    }
}