Java varargs(...)参数的数据类型是什么?

时间:2010-02-17 23:27:18

标签: java

我正在尝试从main()添加信息 到我将信息存储在哈希集中的项目类

我有3个班级

  1. project - main()

  2. libaray - addBandMembers函数

  3. 项目 - addband(字符串...成员)

  4. 我正在添加CD信息。首先,我添加乐队,歌曲#,标题 - 这很好用

    然后在另一个功能我试图添加乐队成员。我想保持这些分开。 我遇到问题的地方是指派乐队成员..

    我理解Varargs的工作原理并不确定如何将其分配给字符串..

    我只会显示一些代码来保持这篇文章的简单和简短..

    这就是我所拥有的:

    main()的

    item = library.addMusicCD("Don't Let Go", "Jerry Garcia Band", 15, "acid rock", "jam bands");
    if (item != null) {
    library.addBandMembers(item, "Jerry Garcia", "Keith Godcheaux");
    library.printItem(out, item);
    }
    

    然后,这里是第一个叫做..

    的函数
    public void addBandMembers(Item musicCD, String... members)
    {
    
       //musicCD.addband(members);   // both cant find addband function..
        //Item.addband(members);
    
    }
    

    然后在另一个班级我试图添加信息..

     private String members;  
    
    
    public void addband(String... member)
    {
        this.members = member;     // error
    
    }
    

    如果我创建私有字符串成员;数组 那么这个函数下面的错误..不兼容的类型..

     public String getMembers()
    {
     return members;   
    }
    

    我该怎么做?

    哦,你好,这是我的套装..

    public class Library
    {
    private Set<CD> theCDs = new HashSet<CD>();
    private Set<DVD> theDVDs = new HashSet<DVD>();
    private Set<Book> theBooks = new HashSet<Book>();
    

    如果您需要查看更多代码,请告诉我们.. 非常感谢你..

3 个答案:

答案 0 :(得分:2)

varargs argument解析为array

所以,改变

private String members;  

private String[] members;  

答案 1 :(得分:1)

更改你的getter以返回String数组而不是String。

答案 2 :(得分:1)

String ... member给你一个数组,所以你看的是一个String []类型的成员。

我认为一旦你明白这一点,你就可以克服这个问题。