【问题标题】:Is there a way to reuse a part of code to instantiate array-lists that hold different data types?有没有办法重用部分代码来实例化包含不同数据类型的数组列表?
【发布时间】:2021-01-01 10:50:06
【问题描述】:

我想找到一种在我的 Java 代码中重用类似数组列表的方法。唯一让每个人不同的是他们持有的数据类型。特别是在我的程序中,我有一个类ActionDeck,它有一个对象ActionCard 的实例变量数组列表和另一个类SalaryDeck,它有一个对象SalaryCard 的实例变量数组列表。这两个类都有相同的实例变量和方法。有没有一种方法可以让我拥有某种蓝图,其中我可以从代码的一部分实例化两个 Deck 类,但它持有的对象不同?它扩展的抽象Deck 类仅包含类似的方法。我只是想缩短代码量,因为我正在为其他甲板类重复这些代码,这似乎也是多余的。

public class SalaryDeck extends Deck {
    
    private Deque<SalaryCard> salaryDeck;
    private ArrayList<SalaryCard> temp;

    public SalaryDeck () {
        salaryDeck = new ArrayDeque<SalaryCard>();
        temp = new ArrayList<SalaryCard>();
    }
public class ActionDeck extends Deck {

    // Instance variables for an action card deck
    private Deque<ActionCard> actionDeck;
    private ArrayList<ActionCard> temp;

    /**
     * Constructor for an action card deck object. It creates a temporary
     * array list, as well as a deque for pushing action card objects into.
     */
    public ActionDeck() {
        actionDeck = new ArrayDeque<ActionCard>();
        temp = new ArrayList<ActionCard>();
    }

我一直在想我可以使用抽象类,但我不确定如何实现它。

非常感谢!

【问题讨论】:

    标签: java oop inheritance arraylist subclass


    【解决方案1】:

    你让你的 Deck 类通用:

    public abstract class Deck<C> {
       protected final Deque<C> cards = new Deque<>();
    }
    
    public class ActionDeck extends Deck<ActionCard> {
    }
    

    【讨论】:

    • 谢谢!这有助于在我的程序的多个类中消除重复的代码行,干杯!
    猜你喜欢
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    相关资源
    最近更新 更多