gpt4 book ai didi

Java Getter 方法 - 如何重新利用它们?

转载 作者:行者123 更新时间:2023-12-02 05:38:00 25 4
gpt4 key购买 nike

是否可以重用 getter,而不必为每个返回值创建一个 getter(它们都是 JPanel 类型。

这是我的类(class):

public class GamePanels {         
JPanel begin, middle, end;

public void begin(){
begin = new JPanel();
begin.setBackground(Color.MAGENTA);
JLabel beginLabel = new JLabel("Do you want to avoid using much of your brain?");
JButton beginYes = new JButton("Yes");
JButton beginNo = new JButton("No");
begin.add(beginLabel);
begin.add(beginYes);
begin.add(beginNo);
}
public void middle(){
//code here
}
public void end(){
//code here
}


public JPanel getPanel(){
return begin;
}
public JPanel getPanel1(){
return middle;
}
public JPanel getPanel2(){
return end;
}
}

这是我的主类中的一个片段(actionListener 使用的类:

newButton.addActionListener(new ActionListener(){  
public void actionPerformed(ActionEvent e){
GamePanels g = new GamePanels();
g.begin();
container.add("Begin", g.getPanel());
cl.show(container, "Begin");
}
});

有没有一种方法可以重复使用相同的 getter,而不是创建大量的 getter 并记住我需要哪个 getter?就像也许在某处添加一个参数,这样它就可以通过一个 getter 了?或者我是否必须为每个值编写一个单独的值?

最佳答案

是的,可以定义一个基于参数返回特定面板的 getter。在您的情况下(使用您发布的少量信息),我的做法是定义一个具有可能状态的枚举(假设您有一组已知的可能状态),并通过查找 map 。例如。 (我没有尝试编译此代码,它可能包含一些编译错误):

public enum GameState {
BEGIN, MIDDLE, END;
}

public class GamePanels {
private Map<GameState, JPanel> lookup = new HashMap<GameState, JPanel> ();
private JPanel beginPanel;
private JPanel middlePanel;
private JPanel endPanel;

public GamePanels () {
// Initialize panels

lookup.put (GameState.BEGIN, beginPanel);
lookup.put (GameState.MIDDLE, middlePanel);
lookup.put (GameState.END, endPanel);
}

public getPanel (GameState state) {
JPanel panel = new JPanel ();

if (lookup.containsKey (state)) {
panel = lookup.get (state);
}

return panel;
}
}

请注意,虽然这可行,但这可能不是此类问题的最佳实现。这个主题更适合 Programmers.SE。

关于Java Getter 方法 - 如何重新利用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24788535/

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