可能重複:
Why does this() and super() have to be the first statement in a constructor?「構造函數調用必須在構造函數中的第一條語句」的問題在Java中
我想有構造函數鏈中的Java。例如,對於第一個構造函數,我有一個字符串作爲參數,並在從參數字符串創建對象時調用第二個構造函數。
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) {
...
}
}
但是,我得到一個錯誤「構造函數調用必須是構造函數中的第一個語句」錯誤。
我提出,在兩個構造之間共享的公共代碼,但我不知道這是爲了繞過這個問題的唯一解決方案。
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的慣例爲我的情況?調用常用方法是一個好方法嗎?
是,調用一個'的init( )'從你的構造函數中的函數是很常見的。 –
您可以將第一個構造函數的主體重寫爲:'this(JavaCore.create(ResourcesPlugin.getWorkspace()。getRoot()。getProject(projectName)),methodName,numberOfParameters);' – Alex