Tôi có một lớp chung trừu tượng:Java Generics: Yêu cầu chung là lớp con của một loại nhất định
public abstract class AbstractMessageHandler<T extends AbstractMessageHandler>
{
public abstract List<String> getTypesOfMessages();
public abstract void handleMessage(String message, CometClient client);
public T setResponseValues(AbstractMessage request, T response)
{
response.setCompanyId(request.getCompanyId());
response.setMessageGroup(request.getMessageGroup());
response.setUserId(request.getUserId());
response.setTimeStamp(AbstractMessage.getCurrentTimeStamp());
return response;
}
}
tôi cần những lớp con chung là một lớp con của lớp này. Trong các otherwords, generic phải là một lớp con của AbstractMessageHandler. Tuy nhiên điều này mang lại cho tôi các vấn đề biên dịch. Bất cứ ai có thể cho tôi biết những gì tôi đang làm sai?
Cảm ơn
Đăng lỗi trình biên dịch. Và, hy vọng, bạn thực sự chỉ muốn yêu cầu một lớp con chung, 'T', là của' giao diện' mà 'AbstractMessageHandler' thực hiện về mặt lý thuyết, cái mà tôi tưởng tượng có tên là' MessageHandler'. Có liên quan, 'setResponseValues' rất có thể sẽ lấy tham số của nó là' Message' chứ không phải 'AbstractMessage'. Đây là những yêu cầu hạn chế không cần thiết, trừ khi chỉ đơn giản là không có 'giao diện' mà chúng thực thi. – pickypg
Nếu không có ngữ cảnh, tôi sẽ tưởng tượng rằng AbstractMessageHandler trong ràng buộc kiểu của bạn yêu cầu một đối số kiểu. Bạn có chắc đây là thiết kế tốt nhất cho vấn đề của bạn không? Hoặc bạn có nghĩa là 'AbstractMessageHandler? ' –