2012-02-02 93 views
0

你好我需要传递一个字符串数组到一个setter的setter。不知道如何传递它。由于需要传递一个字符串数组到一个集合

这是我的形式:

public String[] getFields() { return fields; } 
public void setFields(String[] s) 
{ 
    fields = s; 
    //System.out.println("form Array length " + s.length); 
} 

这里是bean:

private Set<FieldBean> fields; 

    public void setFields(Collection<FieldBean> val) 
{ 
    t 
    if(fields == null) fields = new HashSet<FieldBean>(); 
    fields.addAll(val); 
} 

行动代码:

ParameterBean paramBean = new ParameterBean(); 
form.getFields() y 

     paramBean.setFields(Arrays.asList(form.getFields())); //Need bean set here 

收到了消息说:该方法setFields( Collection)中的ParameterBean类型不适用于参数(List)

+0

是否有重复的阵列中,因为这是一组的要求? – 2012-02-02 18:35:55

+0

请参阅[this](http://stackoverflow.com/questions/3064423/java-easily-convert-array-to-set)线程。 – 2012-02-02 18:36:58

+0

@WebUser:'addAll'将忽略重复项。 – SLaks 2012-02-02 18:37:04

回答

1
new HashSet<..>(Arrays.asList(array)); 

会给你一套。但既然你已经有了addAll(..)的方法,你只需要一个集合,即Arrays.asList(array)

顺便说一句,通常一个setter只需要一个值并设置它。在setter中拥有这种逻辑并不总是一个好主意。因此,请检查您是否可以将其设置为简单的制定者并使用我的答案的第一行。

+0

我加了'paramBean.setFields(Arrays.asList(form.getFields()));'并获得了以下消息:“DetParameterBean类型中的方法setFields(Collection )不适用于参数(列表)” – 2012-02-02 18:44:20

+0

您的setter需要Set类型的DetParameterBean,您不能将字符串转换为DetParameterBean。 DetParameterBean的内容是什么? – proko 2012-02-02 18:53:23

+0

刚刚更新了原帖子 – 2012-02-02 18:59:42

0

随着Guava

myMethod(ImmutableSet.copyOf(stringArray)); 

(更简单,更快,更少的内存消耗比HashSet

相关问题