Java 使用泛型时出现问题

Java 使用泛型时出现问题,java,generics,Java,Generics,我有下面的Genric类,用于设置任何自定义数据类型 公共类通知数据{ 私人电子元件; 公共E getElement(){ 返回元素; } 下面是显示编译时错误的通知任务界面- 无法将T解析为类型。我在方法前面添加了“”,它确实解决了错误,但为使用此接口的其他类创建了问题 公共接口通知任务{ 作废执行(NotificationData任务数据); //--其他方法 } 下面的类实现了它的属性,但显示了错误 名称冲突:类型为的方法execute(NotificationData) Abstr

我有下面的Genric类,用于设置任何自定义数据类型

公共类通知数据{
私人电子元件;
公共E getElement(){
返回元素;
}
下面是显示编译时错误的通知任务界面-

无法将T解析为类型。我在方法前面添加了“”,它确实解决了错误,但为使用此接口的其他类创建了问题

公共接口通知任务{
作废执行(NotificationData任务数据);
//--其他方法
}
下面的类实现了它的属性,但显示了错误

名称冲突:类型为的方法execute(NotificationData) AbstractEmailNotificationTask的擦除与 执行NotificationTask类型的(NotificationData),但不执行 覆盖它

和prepareEmailTemplate显示以下错误-

方法prepareEmailTemplate(NotificationData)来自类型 AbstractEmailNotificationTask引用了缺少的类型T

公共抽象类AbstractEmailNotificationTask实现NotificationTask{
私有静态最终日志记录器=LogFactory.getLog(AbstractEmailNotificationTask.class);
私有布尔标志;
public void execute(NotificationData任务数据){
试一试{
字符串内容=prepareEmailTemplate(taskData);
SetTaskExceived(真);
}捕获(例外e){
logger.debug(e.getMessage(),e);
SetTaskExceived(假);
}
}
抽象保护字符串prepareEmailTemplate(NotificationData taskData)抛出TaskExecutionException;
}
公共类AddressUpdateEmailNotification扩展了AbstractEmailNotificationTask{
公共地址UpdateEmailNotification(){
}
@凌驾
受保护的字符串prepareEmailTemplate(NotificationData任务数据){
CustomerAddress CustomerAddress=taskData.getElement();
返回customerAddress.getCity()+“:”+customerAddress.getState().getStateName();
}
}

上面是将实现prepareEmail模板的实际类。在这个类中,我传递CustomerAddress,但在其他扩展AbstractEmailNotificationTask的类中,我必须传递其他对象。我想使用泛型,但面临这些问题。

您的接口不是泛型的,因此它内部的方法不能被t识别他是泛型类型(无法解析为一个)。只需将其设置为泛型:

public interface NotificationTask<T> {
    void execute(NotificationData<T> taskData);
    // --other methods
}
公共接口通知任务{
作废执行(NotificationData任务数据);
//--其他方法
}

我尝试了这个方法,在本例中,我将在所有实现此接口的类中添加“T”,然后是抽象类,然后是具体类。现在,我的具体类要求在taskData.getElement()处键入cast;是的,泛型就是这样。你必须在任何地方都实现它,否则它就不是真正的泛型。请为你得到的错误提供一个代码示例Hanks Ori,我正在进行更改,将发布结果。我已经解决了它,我的测试用例工作正常。为什么它被标记为-1?