2013-08-14 4 views
1

오버로드 된 생성자가있는 클래스가 있습니다. 생성자에 따라 예외가 발생할 수 있습니다 (startSize 또는 growFactor이 너무 작 으면). 다른 생성자에서는 기본값이 사용되며 이러한 예외는 발생하지 않습니다.오버로드 된 Java 생성자에서 특정 예외가 표시되지 않습니다.

아래와 같이 간단한 생성자에서 경고를 어떻게 든 표시하지 않을 수 있습니까? 오버로드 된 생성자 호출은 첫 번째 호출이어야하므로 try-catch 블록에이를 묶을 수 없습니다.

private static final int DEFAULT_STARTSIZE = 50; 
private static final int DEFAULT_SCALEFACTOR = 2; 

public LinkedArrayList() 
{ 
    this(LinkedArrayList.DEFAULT_STARTSIZE, LinkedArrayList.DEFAULT_SCALEFACTOR); 
} 

public LinkedArrayList(T... startCollection) 
{ 
    this(LinkedArrayList.DEFAULT_STARTSIZE, LinkedArrayList.DEFAULT_SCALEFACTOR, startCollection); 
} 

public LinkedArrayList(int startSize) throws InitialSizeTooSmallException 
{ 
    this(startSize, LinkedArrayList.DEFAULT_SCALEFACTOR); 
} 


public LinkedArrayList(int startSize, T... startCollection) throws InitialSizeTooSmallException 
{ 
    this(startSize, LinkedArrayList.DEFAULT_SCALEFACTOR, startCollection); 
} 

public LinkedArrayList(int startSize, int growFactor) throws InitialSizeTooSmallException, InitialGrowFactorTooSmallException 
{ 
    if (startSize < 1) 
     throw new InitialSizeTooSmallException(); 

    if (growFactor < 1) 
     throw new InitialGrowFactorTooSmallException(); 

    this.data = new DLNodeList<T>(startSize, growFactor); 
} 

public LinkedArrayList(int startSize, int growFactor, T... startCollection) throws InitialSizeTooSmallException, InitialGrowFactorTooSmallException 
{ 
    this(startSize, growFactor); 

    for (T item : startCollection) 
     this.add(item); 
} 

답변

2

이 문제는 다소 자주 나타납니다. 메시지가없는 특정 예외를 throw하는 대신 IllegalArgumentException"Initial size is too small :" + startSize과 같은 올바른 메시지와 함께 보내야합니다.

public ArrayList(int initialCapacity) { 
    super(); 
    if (initialCapacity < 0) 
     throw new IllegalArgumentException("Illegal Capacity: "+ 
              initialCapacity); 
    this.elementData = new Object[initialCapacity]; 
} 
: 참고로

ArrayList는 초기화 참조