gpt4 book ai didi

java - 如何避免 Java 向下转换?

转载 作者:行者123 更新时间:2023-12-03 21:47:59 30 4
gpt4 key购买 nike

我目前正在做一个项目,我有 3 个用户类,假设 UserA、UserB、UserC,它们继承自抽象的 User 类。

该程序应该模拟系统要求用户登录和注销。

这些用户的实例存储在 3 个单独的列表中。

任何时候只有一个用户被“登录”,所以我有一个 User currentUser 变量。

当我想调用特定于 UserA、B 或 C 的方法时,我会进行强制转换。如何在保持代码优雅的同时避免进行这种转换?

代码示例:

public abstract class User {
}

public class UserA extends User {
public void clearAgenda();
}

public class UserB extends User {
}

public class UserC extends User {
}

public class System {
private User loggedUser;

public void clearUserAgenda() {
((UserA) loggedUser).clearAgenda();
}
}

注意:我事先知道如果正在使用一个操作,则当前用户支持该操作。 (例如:如果调用 System.clearUserAgenda() 则用户是 UserA 的实例)

最佳答案

如果要避免转换,必须在抽象类 User 中声明方法 clearAgenda()。如果您不这样做,则只有 UserA 可以使用此方法,因此必须转换它。

关于java - 如何避免 Java 向下转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23816369/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com