Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
71
Task/Deepcopy/Kotlin/deepcopy.kotlin
Normal file
71
Task/Deepcopy/Kotlin/deepcopy.kotlin
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
// Version 1.2.31
|
||||
|
||||
import java.io.Serializable
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.io.ByteArrayInputStream
|
||||
import java.io.ObjectOutputStream
|
||||
import java.io.ObjectInputStream
|
||||
|
||||
fun <T : Serializable> deepCopy(obj: T?): T? {
|
||||
if (obj == null) return null
|
||||
val baos = ByteArrayOutputStream()
|
||||
val oos = ObjectOutputStream(baos)
|
||||
oos.writeObject(obj)
|
||||
oos.close()
|
||||
val bais = ByteArrayInputStream(baos.toByteArray())
|
||||
val ois = ObjectInputStream(bais)
|
||||
@Suppress("unchecked_cast")
|
||||
return ois.readObject() as T
|
||||
}
|
||||
|
||||
class Person(
|
||||
val name: String,
|
||||
var age: Int,
|
||||
val sex: Char,
|
||||
var income: Double,
|
||||
var partner: Person?
|
||||
) : Serializable
|
||||
|
||||
fun printDetails(p1: Person, p2: Person?, p3: Person, p4: Person?) {
|
||||
with (p3) {
|
||||
println("Name : $name")
|
||||
println("Age : $age")
|
||||
println("Sex : $sex")
|
||||
println("Income : $income")
|
||||
if (p4 == null) {
|
||||
println("Partner : None")
|
||||
}
|
||||
else {
|
||||
println("Partner :-")
|
||||
with (p4) {
|
||||
println(" Name : $name")
|
||||
println(" Age : $age")
|
||||
println(" Sex : $sex")
|
||||
println(" Income : $income")
|
||||
}
|
||||
}
|
||||
println("\nSame person as original '$name' == ${p1 === p3}")
|
||||
if (p4 != null) {
|
||||
println("Same person as original '${p2!!.name}' == ${p2 === p4}")
|
||||
}
|
||||
}
|
||||
println()
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
var p1 = Person("John", 35, 'M', 50000.0, null)
|
||||
val p2 = Person("Jane", 32, 'F', 25000.0, p1)
|
||||
p1.partner = p2
|
||||
var p3 = deepCopy(p1)
|
||||
val p4 = p3!!.partner
|
||||
printDetails(p1, p2, p3, p4)
|
||||
|
||||
println("..or, say, after 2 years have elapsed:-\n")
|
||||
with (p1) {
|
||||
age = 37
|
||||
income = 55000.0
|
||||
partner = null
|
||||
}
|
||||
p3 = deepCopy(p1)
|
||||
printDetails(p1, null, p3!!, null)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue