💡 Data class / POJO 비교 글 → 링크
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
}
}