7.Java instanceof 運算子

來源:互聯網
上載者:User

標籤:

多態性帶來了一個問題,就是如何判斷一個變數所實際引用的對象的類型 。 C++使用runtime-type information(RTTI),Java 使用 instanceof 操作符。

instanceof 運算子用來判斷一個變數所引用的對象的實際類型,注意是它引用的對象的類型,不是變數的類型。請看下面的代碼:

  1. public final class Demo{
  2. public static void main(String[] args) {
  3. // 引用 People 類的執行個體
  4. People obj = new People();
  5. if(obj instanceof Object){
  6. System.out.println("我是一個對象");
  7. }
  8. if(obj instanceof People){
  9. System.out.println("我是人類");
  10. }
  11. if(obj instanceof Teacher){
  12. System.out.println("我是一名教師");
  13. }
  14. if(obj instanceof President){
  15. System.out.println("我是校長");
  16. }
  17. System.out.println("-----------"); // 分界線
  18. // 引用 Teacher 類的執行個體
  19. obj = new Teacher();
  20. if(obj instanceof Object){
  21. System.out.println("我是一個對象");
  22. }
  23. if(obj instanceof People){
  24. System.out.println("我是人類");
  25. }
  26. if(obj instanceof Teacher){
  27. System.out.println("我是一名教師");
  28. }
  29. if(obj instanceof President){
  30. System.out.println("我是校長");
  31. }
  32. }
  33. }
  34. class People{ }
  35. class Teacher extends People{ }
  36. class President extends Teacher{ }

運行結果:
我是一個對象
我是人類
-----------
我是一個對象
我是人類
我是一名教師

可以看出,如果變數引用的是當前類或它的子類的執行個體,instanceof 返回 true,否則返回 false。

7.Java instanceof 運算子

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.