2012-01-17 3 views
-1

以下の構文を使用して、ErrorCodeEnumクラスからエラーコードを取得しています。 ErrorCodeEnumクラスのオーバーロードされたコンストラクタを使用して、これを直接行う方法はありますか?オーバーロードされたコンストラクタの使用

new ServiceException(ErrorCodeEnum.ERROR_1005.getErrorCode())

直接エラーコードを取るオーバーロードされたコンストラクタを作成します。

以下パブリッククラスMainExceptionがのRuntimeException {

private String errorMessage; 

private ErrorCodeEnum errorCodeEnum; 


public MainException() { 

} 



public MainException (ErrorCodeEnum errorCodeEnum, String errorMessage) { 
    //super(errorMessage); 
    this.errorCodeEnum = errorCodeEnum; 
    this.errorMessage = errorMessage; 
} 

public String getErrorCode() { 
    return errorCode; 
} 



public String getErrorMessage() { 
    return errorMessage; 
} 

}

ベースクラスとして延びているように、私はクラスがある:パブリッククラスはServiceExceptionがMainException {

public ServiceException() { 
} 


public ServiceException(ErrorCodeEnum errorCodeEnum,String errorMessage) { 

    super(errorCodeEnum,errorMessage); 

} 

}

を拡張 を

はそれをオーバーロードできません。

答えて

0

私はあなたがErrorCodeEnumのインスタンスを直接受け入れるためにServiceExceptionをしたいと思っていますか?

私はあなたが今持っている推測している:

public class ServiceException { 

    public ServiceException(int errorCode) { 
     // do stuff 
    } 

} 

は、単にコンストラクタをオーバーロードするために、あなたはこのようにそれを行うことができます。

public class ServiceException { 

    public ServiceException(int errorCode) { 
     // do stuff 
    } 

    public ServiceException(ErrorCodeEnum errorCodeEnum) { 
     // do other stuff 
    } 

} 

あなたは、直接new ServiceException(ErrorCodeEnum.ERROR_1005)を呼び出すことができます。私はMainExceptionクラスはServiceExceptionによって拡張されている

public class ServiceException { 

    public ServiceException(int errorCode) { 
     // do stuff 
    } 

    public ServiceException(ErrorCodeEnum errorCodeEnum) { 
     this(errorCodeEnum.getErrorCode()); 
    } 

} 
+0

私はこのようなものを持っています---新しいServiceExceptionをスローします( ErrorCodeEnum.ERROR_1001.getErrorCode()、 "無効なデータ")。 – Vishal

+0

ErrorCodeEnumと一緒にコンストラクタで文字列パラメータを定義する方法はありますか? – Vishal

+0

'public ServiceException(ErrorCodeEnum errorCodeEnum、String message){これは(errorCodeEnum.getErrorCode()、message);}'これは本当に基本的なJavaのものです。 http://docs.oracle.com/javase/tutorial/java/indexを参照してください。html –

1

ErrorCodeEnumのコンストラクタは、あなたにServiceExceptionを返すことができません。これ

public ServiceException(ErrorCodeEnum e) { 
    this(e.getErrorCode()); 
} 

throw new ServiceException(ErrorCodeEnum.ERROR_1005); 

かはServiceExceptionを返す列挙型のメソッドを使用することができる:何ができることは列挙型自体のインスタンスを取るはServiceExceptionのコンストラクタを定義することです:従って

public enum ErrorCodeEnum { 

    // ... 

    public newServiceException() { 
     return new ServiceException(this.getErrorCode()); 
    } 
} 

及び使用できるように

throw ErrorCodeEnum.ERROR_1005.newServiceException(); 

あなたはもちろん両方を行うことができます。

+0

:新しいコンストラクタの実装については、最も簡単な方法は、おそらく既存のコンストラクタを利用し、それをあなたがthisを参照して呼び出すことができ、エラーコードを渡すことであろうしたがって、このオーバーロードされたコンストラクタはMainExceptionクラスで記述できますか? – Vishal

+0

もちろん可能です。なぜあなたはそれを試してみませんか? –

関連する問題