1

enter code here我是 Java 新手,我有一个带有类变量“private ArrayList nucleusType”的类“RSTrule”。我想在另一个类(即“RSTRules”)中为这个数组列表设置值,我使用以下代码:

   public class RSTRule{
        private ArrayList<Type> nucleusType;
}

public class RSTRules extends ArrayList<RSTRule>  {



public RSTRule generateSimilarSentence()
    {
        RSTRule rstRule=new RSTRule();
        rstRule.setNucleusType(.....)
        return rstRule;

    }

}

我有两个或三个核数组值。例如,我想以简短的形式将“UMM”和“UMNM”添加到核数组列表中。我怎样才能做到这一点?

4

7 回答 7

1

使用Arrays.asList(不知道 UMM 和 UMNM 是什么,但如下所示)

rstRule.setNucleusType(Arrays.asList(UMM, UMNM));

但是有一个棘手的部分,ArrayList创建者asList无法修改。如果您需要,有两种选择。

1:将新列表包装在ArrayList

rstRule.setNucleusType(new ArrayList<Type>(Arrays.asList(UMM, UMNM)));

2:更改您的设置器,例如:

public void setNucleusType(List<Type> list) {
    nucleusType.clear();
    nucleusType.addAll(list);
}
于 2013-08-14T12:22:03.007 回答
0
  1. 当您阅读程序时,避免使用相似的名称 RSTRule 和 RSTRule 是不切实际的:例如,将它们称为 RSTRule 和 RSTRuleList
  2. RSTRuleList 在全球范围内是一个好主意,因为您想根据业务案例控制列表中的内容。因此,您可以隐藏 RSTRuleList 中的列表
  3. 现在您也将 RSTRuleList 用作工厂(这并不理想:最好使用依赖注入框架,但对于某些需求也可以)

    类 RSTRuleList { 受保护的 ArrayList 规则列表;

    公共 RSTRule generateSimilarSentence(... params) { ...
    return rstRule; }

    公共 addRule( ... params ) { ruleList.add( generateSimilarSentence(params) ); } }

希望它有帮助, 最好的问候, Zied

于 2013-08-14T12:47:11.037 回答
0

你的问题不够清楚。请查看评论并尝试澄清缺失的要点。

您首先需要为RSTRule类添加一个方法,以允许外部类添加到其内部列表中。就像是:

public class RSTRule {

    // You need to create the ArrayList first, 
    // and I suggest use interfaces as declaration when fit
    private final List<Type> nucleusType = new ArrayList<Type>(); 

    public void addType(final Type type) {
        this.nucleusType.add(type);
    }
}

不知道RSTRules需要什么...

于 2013-08-14T12:30:44.833 回答
0

ArrayList 是用于以数组格式存储值的集合类。

  RSTRule rstRule=new RSTRule();
  List<Type> someList = new ArrayList<Type>();
  someList.add(Value);  
  someList.add(value);  
  rstRule.setNucleusType(someList)
  return rstRule;
于 2013-08-14T12:25:53.523 回答
0

如果您传递了任何现有的数组列表,则创建一个新列表并向其中添加元素并传递它。

  RSTRule rstRule=new RSTRule();
  List<Type> someList = new ArrayList<Type>();
  someList.add(UMM);   //remember the UMM is of type TYPE
  someList.add(UMNM);  //remember the UMNM is of type TYPE
  rstRule.setNucleusType(someList)
  return rstRule;
于 2013-08-14T12:22:47.740 回答
0

你可以这样做

    RSTRule rstRule=new RSTRule();
    List<Type> list=new ArrayList<>();
    list.add(UMM);// add some thing in your Type
    rstRule.setNucleusType(list)
    return rstRule;
于 2013-08-14T12:23:12.870 回答
0
class RSTRuleList { 
  protected ArrayList ruleList;

  public RSTRule generateSimilarSentence(... params) { 
    ...
    return rstRule; 
  }

  public addRule( ... params ) { 
    ruleList.add( generateSimilarSentence(params) ); 
  } 
}

(上面答案中的代码没有格式化)

齐德

于 2013-08-14T12:50:00.923 回答