2013-08-14 3 views
1

enter code here 저는 Java에 익숙하지 않습니다. 클래스 변수가 "private ArrayList nucleusType"인 클래스 "RSTrule"이 있습니다.클래스 변수의 배열 목록에 값을 설정하는 방법

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

public class RSTRules extends ArrayList<RSTRule> { 



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

    } 

}

내가 핵 배열 두 개 또는 세 개의 값을 가질 : 나는, 즉 다른 클래스 "RSTRules"내가 다음 코드를 사용 이 ArrayList에 값을 설정합니다. 예를 들어 "UMM"과 "UMNM"을 핵 배열 목록에 짧은 형식으로 추가하려고합니다. 어떻게 할 수 있습니까?

+1

내가 생각하는 희망 당신은 제네릭을 잘못 사용한 것입니다. 나는 당신이'ArrayList '을 확장 할 필요가 있는지 의심 스럽다. – m0skit0

+1

'ArrayList '을 확장하지 않으려면 상속 합성을 사용해야합니다. –

+0

setNucleusType (.....) <- 여기서 뭐하고 있니? 어디에서 이걸 얻나요? – m0skit0

답변

1

사용 Arrays.asList (아래 같은 어떤 UMM과 UMNM이 무엇인지 단서,하지만 뭔가)

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

하지만, asList에 의해 생성 된 ArrayList이 수정 될 수없는 까다로운 부분이있다. 필요한 경우 두 가지 옵션이 있습니다.

1 : 그렇지 않으면 새로 만들, 당신과 함께 기존의 배열 목록을 전달하면

public void setNucleusType(List<Type> list) { 
    nucleusType.clear(); 
    nucleusType.addAll(list); 
} 
+0

'extends ArrayList ' – m0skit0

+0

@ m0skit0은 어떨까요? 이 코드에서는 많은 부분이 잘못되어 있지만 질문은 매우 간단합니다. 나는'setNucleusType'이 단순히'RSTRule'의'nucleusType'의 설정자라고 가정했습니다. –

0

:

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

2 : ArrayList에 새 목록을 랩처럼 세터 변경 요소를 추가하고 전달하십시오.

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; 
0

당신은

RSTRule rstRule=new RSTRule(); 
    List<Type> list=new ArrayList<>(); 
    list.add(UMM);// add some thing in your Type 
    rstRule.setNucleusType(list) 
    return rstRule; 
0

ArrayList를 배열 형식의 값을 저장하는 데 유용 컬렉션 클래스입니다 이런 식으로 할 수 있습니다.

RSTRule rstRule=new RSTRule(); 
    List<Type> someList = new ArrayList<Type>(); 
    someList.add(Value); 
    someList.add(value); 
    rstRule.setNucleusType(someList) 
    return rstRule; 
0

질문이 명확하지 않습니다. 의견을보고 누락 된 점을 명확히하려고하십시오.

먼저 외부 클래스가 내부 목록에 추가 할 수 있도록 RSTRule 클래스의 메서드를 추가해야합니다. 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이를 위해 ... 유사한 이름 RSTRule 및 RSTRules을 가진

0
  1. 않도록 필요한 것을 모른다는 실용적이지 않다 예를 들어 RSTRuleList
  2. RSTRuleList는 비즈니스 사례에 따라 목록에있는 것을 제어하고 싶어하기 때문에 전 세계적으로 좋은 아이디어입니다.따라서 당신은 RSTRuleList의 목록을 숨길 수
  3. 이제 (적합하지 않은 : 의존성 주입 프레임 워크를 사용하는 것이 바람직하지만 그것이 어떤 요구 괜찮습니다) 공장으로도 RSTRuleList 사용
  4. 클래스 RSTRuleList { protected ArrayList ruleList;

    공개 RSTRule generateSimilarSentence (... params) { ...
    return rstRule; }

    공개 addRule (PARAMS ...) { ruleList.add (generateSimilarSentence (PARAMS)); }

} , 그것은 도움이 안부, Zied

0
class RSTRuleList { 
    protected ArrayList ruleList; 

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

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

(위의 대답 코드는하지 않았다 형식)

Zied

+0

Zied, 이전 대답을 편집하고 새 답안을 작성하는 대신이 예를 추가하십시오.) – m0skit0

관련 문제