thể trùng lặp:
Why does this() and super() have to be the first statement in a constructor?"gọi Constructor phải là tuyên bố đầu tiên trong một constructor" vấn đề trong Java
Tôi muốn có chuỗi constructor trong Java. Ví dụ, với hàm tạo đầu tiên, tôi có một chuỗi như một tham số và gọi hàm tạo thứ hai khi tôi tạo một đối tượng từ chuỗi tham số.
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) {
...
}
}
Tuy nhiên, tôi gặp lỗi "Lỗi xây dựng cuộc gọi phải là câu lệnh đầu tiên trong hàm tạo".
tôi đã thực hiện một mã phổ biến mà được chia sẻ giữa hai nhà thầu, nhưng tôi không chắc chắn đây là giải pháp duy nhất để vượt qua vấn đề này.
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)
{
...
}
}
- Tại sao Java yêu cầu cuộc gọi constructor là tuyên bố đầu tiên? Ý tưởng đằng sau yêu cầu này là gì?
- Quy ước của Java đối với trường hợp của tôi là gì? Là phương pháp phổ biến gọi là một cách tốt để đi?
có, gọi một 'init () 'Hàm từ hàm tạo của bạn là phổ biến. –
Bạn chỉ có thể viết lại phần thân của hàm tạo đầu tiên như sau: 'this (JavaCore.create (ResourcesPlugin.getWorkspace(). GetRoot(). GetProject (projectName)), methodName, numberOfParameters); ' – Alex