java - 利用继承来打印引用

标签 java inheritance arraylist extends

我遇到了如何从多个代码区域调用变量来打印 ArrayList 的问题,这里是一个示例:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Scanner;

public class ReferenceHolder extends java.lang.Object{
ArrayList<Reference> references = new ArrayList<Reference>();



public void printAllBibtexEntries() {
    Reference.getBibtexEntry(null, null, null, 0, 0, 0);
    // TODO Auto-generated method stub

}

public void addReference(Book book ) {
    String author = Reference.getAuthor();
    System.out.println(references.size());
    references.add(new Book(author, null, null, 0));
    // TODO Auto-generated method stub
}

public void addReference(Article article) {
    references.add(new Article(null, null, 0, null, 0, 0));
    // TODO Auto-generated method stub


}

}

问题是我想从“Book”和“Article”类调用变量,利用“addReference”方法中的信息并通过 printAllBibtexEntries 方法打印信息。关于如何从 BibtexEntries 变量而不是 null 进行打印的任何提示?

P.S:即使我确实在references.add()中插入了变量,它仍然会返回“null”。该示例位于与“author”相关的 addReference(Book book) 中。

最佳答案

为书籍/文章创建接口(interface)或抽象类

例如:

interface IReference {
     public String getAuthor();
}

class Book implements IReference {
    ... implement the interface
}

class Article implements IReference {
    ... implement the interface
}

现在您可以将列表声明为:

ArrayList<IReference> references = new ArrayList<IReference>();

public void printAllBibtexEntries() {
    IReference ref = (IReference)Reference.getBibtexEntry(null, null, null, 0, 0, 0);
    System.out.println(ref.getAuthor());
    // TODO Auto-generated method stub
}

关于java - 利用继承来打印引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34258952/

相关文章:

Java - 查找仅在测试中使用的方法(在源代码中未使用)

java - 如何以编程方式在 Eclipse 中刷新 Java 项目

java - 返回 Java 中抽象类的子类?

java - 在 java 中使用 ArrayList 时的深拷贝

java - 为什么 LinkedList 和 arraylist 在 java 中扩展 AbstractList?

java - Java 哈希集中字符的索引

java - 使用 Google Storage 将图像上传/下载到 Google Compute Engine

java - 比较另一个类JAVA中的日期和时间类

C++派生类问题

c++ - 使用 vector 存储从同一父类继承的不同对象c++