gpt4 book ai didi

java - 访问方法时遇到问题

转载 作者:行者123 更新时间:2023-12-02 08:10:16 26 4
gpt4 key购买 nike

只是一个有关访问另一个类中的方法的简单问题。我知道这听起来很简单,但我找不到任何地方可以为我解答。所以就在这里。

这是在一个类中..(只保留相关位,因为大多数其他内容只是格式化和传递值。)

public class ContactManager extends JFrame{ 
public void getData()throws FileNotFoundException{
...
...
private class thehandler implements ActionListener {
public void actionPerformed(ActionEvent event) {
if (event.getSource() == viewButton && selectedIndex != -1){
ViewContact view = new ViewContact();
view.pack();
view.setVisible(true);




public class ViewContact extends JFrame {
...
...
private class viewhandler implements ActionListener {
public void actionPerformed(ActionEvent event){
if (event.getSource() == updateButton){
getData(); //this method i want to use thats in the contact manager window is what im having issues with.
}

我知道访问另一个类中的方法的语法是错误的,我只是想展示我正在尝试做什么。我无法创建联系人管理器类的另一个实例,因为我已经在使用它了。:S 至少我认为这就是问题所在。我希望我已经留下了足够的相关信息,并提前感谢您对此的帮助。

最佳答案

对您问题的简短回答是,您可以将 ContactManager 的适当实例传递给 ViewManager 并根据需要调用 getData() :

class ViewManager extends JFrame {
private ContactManager cm;

public ViewManager(ContactManager cm) {
this.cm = cm;
}

private class Handler implements ActionListener {
public void actionPerformed(ActionEvent e) {
cm.getData();
}
}
}

更长的答案是,最好将业务逻辑与 View 逻辑分开,并将 getData 方法放入业务层类中:

class DataSource {
public Data getData();
}

class ContactManager extends JFrame {
private DataSource dataSource;
public ContactManager(DataSource dataSource) {
...
}
}

class ViewContact extends JFrame {
private DataSource dataSource;
public ViewContact(DataSource dataSource) {
...
}
}

这将负责获取/管理数据的类与负责显示数据的类解耦。这意味着您可以更改 View 而不影响数据存储方式,或者您可以更改数据存储方式而不影响 View 。

关于java - 访问方法时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7578744/

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