【问题标题】:How do I invoke a method on an instance of a class that isn't yet defined?如何在尚未定义的类的实例上调用方法?
【发布时间】:2014-04-03 19:18:35
【问题描述】:

我有一个名为 Dev 的类,其中包含一个名为 addToTasksAssigned 的方法,用于将任务添加到 ArrayList

public void addToTasksAssigned(String newTask){
    tasksAssigned.add(newTask);
}

在我的任务类中,我有一个名为 setAssignedDev 的方法。我希望将此函数的输入添加到 Dev 中分配的任务列表中:

public void setAssignedDev(String newDev){
    this.assignedDev=newDev;
    newDev.addToTasksAssigned(getProject());  //getProject() here is just the task name    

    }

我知道我无法调用尚不存在的类,这就是代码不起作用的原因。有没有办法限制“String newDev”输入,使其必须是 Dev 类的实例?有没有办法从其他类中引用类的实例?

谢谢

【问题讨论】:

  • 是的...使用public void setAssignedDev(Dev newDev)
  • 为什么不将newDev 参数设为Dev 类型,而不是String
  • 对不起,您的问题还不清楚。是不知何故尚不存在的 class,还是已知类的 instance,还是您指的是几个可能的现有类之一? (请记住,您不能“凭空”创建 ,它必须在 .java 源文件中定义。)

标签: java class methods arraylist instance


【解决方案1】:

为您的注册用户创建一个Dev 课程:

public class Dev {

    private final String name;
    private final List<?> tasks = new ArrayList<>();

    //getters / setters / constructors, etc

}

从那里开始,有一个管理 Dev 成员的类:

public class UserManager {

    private Map<String, Dev> devs = new HashMap<>();

    public void addDev(Dev dev) {
        this.devs.put(dev.getName(), dev);
    }

}

您应该首先加载这些并通过某种形式访问(通过主类保持管理器链接,并传递主类实例是一个好方法)。这将让您改为传递 Dev 对象,并在将来为其对象添加更多功能

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 2023-03-03
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    相关资源
    最近更新 更多