java - IF 条件下无法识别 instanceOf 的继承问题

标签 java inheritance instanceof bluej

我有以下继承层次结构:Staff (Abstract)、HomeWorker (Abstract)、Typist。 Typist 继承自这两个抽象类。

我正在实现一个名为 Manager 的界面(用于学术作业)。我在其中实现 Manager 的类称为 Branch。我需要在 Branch 中实现的方法之一是 setEmail,如下所示。

问题是只有打字员有电子邮件地址,其他员工(翻译员和文员)没有。所有员工都存储在 TreeMap 中。在尝试调用 setEmail 方法之前,我试图检查 id 参数指定的工作人员是否是打字员的实例(因为此方法仅存在于打字员中)。

但是,使用 BlueJ,只要我在 IF 条件中键入 instanceOf,范围突出显示就会告诉我它超出范围,并且在 StaffMember 引用之后需要“)”。

有什么想法吗?

/** Sets email for a typist

 * @param id represents the staff id
 * @param email is the email address
 */ 
public void setEmail(String id, String email)
{
    //Should be done in the typist class. This increases coupling though. 
    //Need to see if there is a way that I can do this using the staff class instead 
    Staff staffMember = staff.get (id);
    //TO DO: Need to put an IF statement in that confirms the staff member is a typist,    otherwise I could end up
    //trying to set an email against a staff type which doesn't store email addresses
    if (staffMember instanceOf Typist)
    {
    staffMember.setEmail(email);      
    }

}

最佳答案

尝试使用关键字

实例

而不是

instanceOf

因为最后一个不是 Java 中的关键字。

关于java - IF 条件下无法识别 instanceOf 的继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20936340/

相关文章:

java - 在文本行中每次出现字符后获取值

java - 使用 jsoup 在站点上查找特定文件

inheritance - 以 class-extend.js 风格扩展自定义对象

C++ 继承 "toString"

javascript - JavaScript 对象构造函数的问题,其中参数是其他对象

java - 传递 Collections.unmodifiable* 一个已经用 Collections.unmodifiable* 包装的实例是多么低效?

java - 如何使用纯Java(包括日期和小数类型)生成Parquet文件并将其上传到S3 [Windows](无HDFS)

java - 执行 JAR 并使用 InputStream 读取控制台输出 - Java

Java 泛型。如何正确扩展扩展通用抽象参数类型类的参数类型类

python - 获取实例的类名