簡體   English   中英

當孩子被歸類為父母時,我可以訪問孩子的方法嗎?

[英]Can I access a child's method when it is classified as a parent?

例如,我有一個 arraylist 對象,這些對象都是父類型,但我想訪問其中一個元素的子方法。 這是我的代碼:

ArrayList<Employee> staff = new ArrayList<Employee>();

for (Employee emp : staff) {
    if (emp.getType().equalsIgnoreCase("Manager")) {
        //use a method from the manager class with emp
    }
}

您必須使用 cast 構造進行類型斷言。 當我們討論這個話題時,使用字符串類型的getType()方法似乎是一個設計錯誤。 那應該是一個枚舉,或者你可以完全擺脫它。 假設你有:

class Employee {}
class Manager extends Employee {}

然后:

for (Employee emp : staff) {
   if (emp instanceof Manager) {
       Manager m = (Manager) emp;
       m.doManageryThings();
   }
}

(Manager) emp部分是一個類型斷言:它的作用類似於m = emp (通常不會是法律聲明,但它是這種強制轉換。它是相同的 object,但現在分配給類型的變量你自找的)。 如果emp沒有引用管理器,則會拋出 ClassCastException。 然后你可以自由地在 m 上調用任何你想要的東西。

從 java 開始,嗯.. 14? 15? 你可以縮短這個:

if (emp instanceof Manager m) {
   // use m here
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM