我在动作侦听器中设置超类属性arraylist Pokemon pokeSlots“>
问题:我希望能够实例化另一个类中的子类(HumanTrainer)的实例,并在用于人类训练器的pokeslot中访问口袋妖怪,但我一直无法弄清楚该如何做。任何尝试都只是返回一个空数组或nullpointerexception。
btnSelect.addActionListener(e -> { //allows you select and remove multiple pokemon at the same time by returning arrays if(maxPokemon<2) { //get the selected element's index and value. Object[] lstValues = lstDisplayAllPokemon.getSelectedValuesList().toArray(); int[] lstIndices = lstDisplayAllPokemon.getSelectedIndices(); for (int i = 0; i < lstIndices.length; i++) { //need to get Pokemon from pokemonlist where lstIndices[i] and store in selectedPokemonList selectedPokemonList.add(pokemonList.get(lstIndices[i])); new HumanTrainer(selectedPokemonList); model1.setElementAt(lstValues[i] + " (Selected)", lstIndices[i]); maxPokemon++; } } });
超类
import java.util.ArrayList; abstract public class Trainer{ protected String name; protected ArrayList<Pokemon> pokeSlots; protected ArrayList<Item> items; }
子类
import java.util.ArrayList; public class HumanTrainer extends Trainer{ int money; //private ArrayList<Pokemon> pokeSlots; HumanTrainer(){ } HumanTrainer(ArrayList<Pokemon> pPokemon){ this.pokeSlots = pPokemon; for (Pokemon ps: pPokemon) { System.out.println(ps.name); } } }
其他类别
Trainer Human = new HumanTrainer(); Human.pokeSlots.get(0);
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at BattleGUI.DefaultBattleMenu(BattleGUI.java:138) at BattleGUI.<init>(BattleGUI.java:40) at MainMenuGUI.lambda$new$2(MainMenuGUI.java:171) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6636) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342) at java.desktop/java.awt.Component.processEvent(Component.java:6401) at java.desktop/java.awt.Container.processEvent(Container.java:2263) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5012) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4844) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4919) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4548) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4489) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2764) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4844) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
我正在动作侦听器中设置超类属性arraylist Pokemon pokeSlots“问题:我希望能够实例化另一个类中的子类(HumanTrainer)的实例,并且...]]