日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

isinstanceof java_scala中的isInstanceOf和asInstanceOf

發(fā)布時(shí)間:2025/3/15 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 isinstanceof java_scala中的isInstanceOf和asInstanceOf 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如果實(shí)例化了子類(lèi)的對(duì)象,但是將其賦予了父類(lèi)類(lèi)型的變量,

在后續(xù)的過(guò)程中,又需要將父類(lèi)類(lèi)型的變量轉(zhuǎn)換為子類(lèi)類(lèi)型的變量,應(yīng)該如何做?

?? 首先,需要使用isInstanceOf 判斷對(duì)象是否為指定類(lèi)的對(duì)象,如果是的話(huà),則可以使用 asInstanceOf 將對(duì)象轉(zhuǎn)換為指定類(lèi)型;

?? 注意:p.isInstanceOf[XX] 判斷 p 是否為 XX 對(duì)象的實(shí)例;p.asInstanceOf[XX] 把 p 轉(zhuǎn)換成 XX 對(duì)象的實(shí)例

?? 注意:如果沒(méi)有用isInstanceOf 先判斷對(duì)象是否為指定類(lèi)的實(shí)例,就直接用 asInstanceOf 轉(zhuǎn)換,則可能會(huì)拋出異常;

?? 注意:如果對(duì)象是 null,則isInstanceOf 一定返回 false, asInstanceOf 一定返回 null;

? Scala與Java類(lèi)型檢查和轉(zhuǎn)換 Scala? Java obj.isInstanceOf[C]? obj instanceof C obj.asInstanceOf[C]? (C)obj classOf[C]? C.class

?? 舉例說(shuō)明:

package cn.itcast.extends_demo

class Person3 {}

class Student3 extends Person3

object Student3{

def main (args: Array[String] ) {

val p: Person3 = new Student3

var s: Student3 = null

//如果對(duì)象是 null,則 isInstanceOf 一定返回 false

println (s.isInstanceOf[Student3])

// 判斷 p 是否為 Student3 對(duì)象的實(shí)例

if (p.isInstanceOf[Student3] ) {

//把 p 轉(zhuǎn)換成 Student3 對(duì)象的實(shí)例

s = p.asInstanceOf[Student3]

}

println (s.isInstanceOf[Student3] )

}

}

Scala中g(shù)etClass 和 classOf

?? isInstanceOf 只能判斷出對(duì)象是否為指定類(lèi)以及其子類(lèi)的對(duì)象,而不能精確的判斷出,對(duì)象就是指定類(lèi)的對(duì)象;

?? 如果要求精確地判斷出對(duì)象就是指定類(lèi)的對(duì)象,那么就只能使用 getClass 和 classOf 了;

?? p.getClass 可以精確地獲取對(duì)象的類(lèi),classOf[XX]可以精確的獲取類(lèi),然后使用 == 操作符即可判斷;

?? 舉例說(shuō)明:

package cn.itcast.extends_demo

class Person4 {}

class Student4 extends Person4

object Student4{

def main(args: Array[String]) {

val p:Person4=new Student4

//判斷p是否為Person4類(lèi)的實(shí)例

println(p.isInstanceOf[Person4])//true

//判斷p的類(lèi)型是否為Person4類(lèi)

println(p.getClass == classOf[Person4])//false

//判斷p的類(lèi)型是否為Student4類(lèi)

println(p.getClass == classOf[Student4])//true

}

}

總結(jié)

以上是生活随笔為你收集整理的isinstanceof java_scala中的isInstanceOf和asInstanceOf的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。