重複の可能性:
this() と super() をコンストラクターの最初のステートメントにする必要があるのはなぜですか?
Java でコンストラクター チェーンが必要です。たとえば、最初のコンストラクターではパラメーターとして文字列を使用し、パラメーター文字列からオブジェクトを作成するときに 2 番目のコンストラクターを呼び出します。
public class IMethodFinder {
public IMethodFinder(String projectName, String methodName,
int numberOfParameters) {
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
IJavaProject javaProject = JavaCore.create(project);
this(javaProject, methodName, numberOfParameters);
}
public IMethodFinder(IJavaProject javaProject, String methodName,
int numberOfParameters) {
...
}
}
しかし、「コンストラクター呼び出しはコンストラクターの最初のステートメントでなければなりません」というエラーが発生しました。
2 つのコンストラクター間で共有される共通のコードを作成しましたが、これが問題を回避する唯一の解決策かどうかはわかりません。
public class IMethodFinder {
public IMethodFinder(IJavaProject javaProject, String methodName,
int numberOfParameters) {
dosomething(javaProject, methodName, numberOfParameters);
}
public IMethodFinder(String projectName, String methodName,
int numberOfParameters) {
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
IJavaProject javaProject = JavaCore.create(project);
dosomething(javaProject, methodName, numberOfParameters);
}
private void dosomething(IJavaProject javaProject, String methodName,
int numberOfParameters)
{
...
}
}
- Java が最初のステートメントとしてコンストラクター呼び出しを必要とするのはなぜですか? この要件の背後にある考え方は何ですか?
- 私の場合のJavaの規則は何ですか? 共通メソッドの呼び出しは良い方法ですか?