Java,单例元素修改,软件模式

时间:2013-08-13 20:54:49

标签: java arrays eclipse singleton

简短的问题。希望它得到很快的回答。假设我有一个像这样的单身人士:

package main.library;

public enum LibrarySingleton {
    INSTANCE(new String[][]{});

    final String[][] bookStore;

    private LibrarySingleton(String[][] bookStore){
        this.bookStore = bookStore;
    }
}

和一个包含3个变量的Book类:

package main.library;

public class Book{
    String author;
    String title;
    int pages;

    @Override public String toString(){
        return ("|" + author + "|" + title + "|" + pages + "|");
    }

    public Book(){
        System.out.println("Error: No book information specified");
    }

    public Book(String author, String title, int pages){
        this.author = author;
        this.title = title;
        this.pages = pages;
    }

    public String getAuthor(){
        return author;
    }

    public String getTitle(){
        return title;
    }

    public int getPages(){
        return pages;
    }
}

我正在研究如何使用该单例作为一个拿着书的数组。如何访问这些书籍,将它们放入数组(单例),或从数组中删除它们(单例)?如果单身人士的写法不同,请纠正我,并解释为什么它是错的,因为我对Java还不是那么“高级”。

真的希望你们能回答我。只是问题。

2 个答案:

答案 0 :(得分:1)

如果你想要单身,你可以使用以下方法:

public class Library {
   private static final Library instance = new Library();
   private List<Book> books = new ArrayList<Book>();

   public static Library getInstance() {
       return instance ;
   }

   public void add(Book book) { 
       books.add(book);
   }
}

当然,如果您的程序有多个线程,请添加同步。如果你的程序在J2EE环境中运行,那里发生了复杂的类加载,你需要一个不同的模式。

答案 1 :(得分:0)

如果初始化一个空数组并使其成为最终数组,它将保持为空并且您无法重新初始化它。我想你需要的是一个arraylist(一般列表)。那个你可以初始化并添加元素。