如果在获取参数的类之后实例化它,如何使用对象引用作为参数?
发布时间:2020-12-15 08:43:29 所属栏目:Java 来源:网络整理
导读:所以我有这个代码: package com.erikbalen.game.rpg;import com.erikbalen.platform.*;import javax.swing.JFrame;public class World extends Engine { public static void main(String[] args) { Gui display = new Gui(/*takes a Player argument so i c
所以我有这个代码:
package com.erikbalen.game.rpg; import com.erikbalen.platform.*; import javax.swing.JFrame; public class World extends Engine { public static void main(String[] args) { Gui display = new Gui(/*takes a Player argument so i can get certain variables*/); display.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); display.setSize(300,220); display.setVisible(true); Player player1 = new Dps("ebalen",display); Player player2 = new Healer("frankypanky",display); } } package com.erikbalen.game.rpg; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class Gui extends JFrame implements ActionListener { /** * */ private static final long serialVersionUID = -384241835772507459L; private JLabel playerInfo; private JTextField textField; private final static String newline = "n"; private JTextArea feed; private JScrollPane scrollPane; private Player player; public Gui(Player currentPlayer) { super("Erik's RPG"); this.player = currentPlayer; setLayout(new FlowLayout()); playerInfo = new JLabel("<html>Health = " + currentPlayer.getHealth() + " | " + "Mana = " + currentPlayer.getMana() + "</html>"); playerInfo.setBorder(BorderFactory.createTitledBorder(currentPlayer.getName())); textField = new JTextField(20); textField.addActionListener(this); feed = new JTextArea(5,20); scrollPane = new JScrollPane(feed); feed.setEditable(false); add(playerInfo); add(feed); add(textField); add(scrollPane); } public void actionPerformed(ActionEvent textBox) { String text = textField.getText(); this.player.chat(text); } public void printText(String text) { feed.append(text + "n"); feed.setCaretPosition(feed.getDocument().getLength()); } } 我的问题是,类Gui以玩家为参数而玩家以Gui为参数.我如何让两个对象互相作为参数?如果我的代码效率低下,请随时告诉我. 解决方法
好吧,理想情况下你应该尝试打破循环依赖,否则,你可以:
>创建GUI,通过传入GUI创建玩家,然后将玩家添加到GUI Player(String name) { GUI gui = new GUi(this); ... } 所有这些都是不理想的: >你可能希望你的类是不可变的,这使前两个选项变得讨厌 这可以追溯到“试图打破依赖” – 但如果这真的不可能,我可能会赞成第一种选择,而不知道其他任何事情.能够将玩家添加到游戏中是有意义的 – 在IMO之后为玩家设置GUI没有多大意义. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |