open class Any
Any는 코틀린에서 모든 타입이 상속받는 최상위 타입
자바로 디컴파일 해보면 Object 타입으로 변환되며,
제네릭 타입으로 Any를 사용하면 어떤 객체를 집어넣든 업캐스팅이 적용돼서 모든 타입이 들어갈 수 있게 된다.
자바의 Object와 코틀린 Any의 차이점
fun main() {
val arrayList = arrayListOf<Any>()
arrayList.add("안녕")
arrayList.add(1)
arrayList.add(3.14)
println(arrayList.joinToString()) // 출력 결과 : 안녕, 1, 3.14
}}
val name: Any = object : Any() {
//익명객체 사용할때 Any생략되어있어도 모두 디폴트로 Any상속받고 있음
val yourname = "길동"
override fun toString(): String {
return "내이름은 길동이다"
}
}
fun isInt(var1 : Any) : Boolean{
return (var1 is Int)
}
class Test {
byte v1=10;
}
class Test {
public void test(Object ob1, Object ob2) {
if (ob1 instanceof String && ob2 instanceof String) {
String v1=(String)ob1;
String v2=(String)ob2;
}
}
}
val string:String="1"
val int:Int=string.toInt()
val int2:Int=10
val double:Double=int2.toDouble()
val double2:Double=13.3
val string2:String=double2.toString()
val string3:String=""+double2
//val string3:String=double2+"" 안됨 주의!!
class Test {
fun test(ob1: Any?, ob2: Any?) {
if (ob1 is String && ob2 is String) {
val v1 = ob1
//val v1=ob1.toString() 에서 toString()생략이 가능
val v2 = ob2
//val v2=ob2.toString() 에서 toString()생략이 가능
}
}
}
return var1 is Int && var1>0
이런식으로도 작성 가능val double3: Double = 3.5
double3 as Int
println(double3) //3
val double3: Double? = null
double3 as Int //에러
val double3: Double? = null
double3 as? Int //가능
//부모 클래스
open class Animal
class Dog : Animal()
//클래스 형변환
val dog = Dog()
val animal = dog as Animal