0 0

java泛型问题5

public interface IFacade<T> {
public Map<String, Object> execute(T param);
}

public final class FacadeFactory {
public static <T extends IFacade<?>> T getInstance(Class<? extends IFacade<?>> clazz) {
return Factory.getBean(clazz.getSimpleName());
}
}

public class Facade<E extends AbstractDto> implements IFacade<Map<String, Object>> {
@Override
public Map<String, Object> execute(Map<String, Object> o) {
            return null;
        }
private static <E extends AbstractDto> void doSomething(List<E> records) {
        }
}

Facade facade = FacadeFactory.getInstance(Facade.class);

最前边这个Facade类原来不带<E extends AbstractDto>这个泛型,只是实现了IFacade<Map<String, Object>>这个接口。
FacadeFactory.getInstance(Facade.class);这个调用也是木有问题的。

现在我由于需要Facade类增加了<E extends AbstractDto>后,
FacadeFactory.getInstance(Facade.class);这个工厂调用的getInstance部分就提示编译错误了。提示:
ZkiFacadeFactory 的方法 getInstance(Class<? extends IFacade<?>>) 的参数  (Class<Facade>) 不匹配。

请问是哪里的问题?
2013年7月22日 23:00

2个答案 按时间排序 按投票排序

0 0

采纳的答案

维数不匹配,建议删掉T getInstance(Class<? extends IFacade<?>> clazz) 里面的IFacade<?>问号,T getInstance(Class<? extends IFacade> clazz)

2013年7月25日 16:14
0 0

Facade facade = FacadeFactory.getInstance(Facade.class);
改为
Facade facade = FacadeFactory.getInstance((Class<? extends IFacade<?>>) Facade.class);

因为Facade是<E extends AbstractDto>,而参数需要的类型为Class<? extends IFacade<?>>

2013年7月23日 09:36

相关推荐

    JAVA泛型加减乘除

    这是一个使用JAVA实现的泛型编程,分为两部分,第一部分创建泛型类,并实例化泛型对象,得出相加结果。 第二部分用户自行输入0--4,选择要进行的加减乘除运算或退出,再输入要进行运算的两个数,并返回运算结果及...

    Java泛型的用法及T.class的获取过程解析

    Java泛型的用法及T.class的获取过程解析 Java泛型是Java编程语言中的一种重要特性,它允许开发者在编写代码时指定类型参数,从而提高代码的灵活性和可读性。本文将详细介绍Java泛型的用法 及T.class的获取过程解析...

    很好的Java泛型的总结

    Java泛型机制详解 Java泛型是Java语言中的一种机制,用于在编译期检查类型安全。Java泛型的出现解决了Java早期版本中类型安全检查的缺陷。Java泛型的好处是可以在编译期检查类型安全,避免了运行时的...

    Java泛型三篇文章,让你彻底理解泛型(super ,extend等区别)

    Java 泛型详解 Java 泛型是 Java SE 5.0 中引入的一项特征,它允许程序员在编译时检查类型安全,从而减少了 runtime 错误的可能性。泛型的主要优点是可以Reusable Code,让程序员编写更加灵活和可维护的代码。 ...

    Java泛型应用实例

    Java泛型是Java编程语言中的一个强大特性,它允许我们在定义类、接口和方法时指定类型参数,从而实现代码的重用和类型安全。在Java泛型应用实例中,我们可以看到泛型如何帮助我们提高代码的灵活性和效率,减少运行时...

    1.java泛型定义.zip

    1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1....

    java泛型技术之发展

    - **类型擦除**:Java泛型采用了类型擦除的策略,这意味着在编译期间,泛型信息会被删除,只留下原始的无参数类型,这解决了与Java的向下兼容问题。 - **JDK 5.0引入**:Java 5.0正式引入泛型,使得在编译时期就能...

    java 泛型接口示例

    下面我们将详细探讨Java泛型接口的相关知识点。 1. **泛型接口的定义** 泛型接口的定义方式与普通接口类似,只是在接口名之后添加了尖括号`&lt;T&gt;`,其中`T`是一个类型参数,代表某种未知的数据类型。例如: ```java...

    4.java泛型的限制.zip

    4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip...

    java 泛型方法使用示例

    下面我们将深入探讨Java泛型方法的概念、语法以及使用示例。 **一、泛型方法概念** 泛型方法是一种具有类型参数的方法,这些类型参数可以在方法声明时指定,并在方法体内部使用。与类的泛型类似,它们提供了编译时...

    java 泛型类的类型识别示例

    综上所述,虽然Java泛型在编译后会进行类型擦除,但通过上述技巧,我们仍然能够在运行时获得关于泛型类实例化类型的一些信息。在实际开发中,这些方法可以帮助我们编写更加灵活和安全的代码。在示例文件`GenericRTTI...

    java泛型学习ppt

    "Java 泛型学习" Java 泛型是 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的...

    java泛型的内部原理及更深应用

    Java泛型是Java编程语言中的一个强大特性,它允许在定义类、接口和方法时使用类型参数,从而实现参数化类型。这使得代码更加安全、可读性更强,并且能够减少类型转换的必要。在“java泛型的内部原理及更深应用”这个...

    Java 泛型擦除后的三种补救方法

    Java 泛型是一种强大的工具,它允许我们在编程时指定变量的类型,提供了编译时的类型安全。然而,Java 的泛型在运行时是被擦除的,这意味着在运行时刻,所有的泛型类型信息都会丢失,无法直接用来创建对象或进行类型...

    Java泛型使用详细分析.pdf

    泛型是 Java 5 中引入的一种语言特性,旨在解决类型安全问题。在 Java 中,泛型可以应用于集合、类、接口和方法中。泛型的主要目的是确保类型安全,避免在运行时出现类型相关的错误。 1. 为什么要使用泛型? 在 ...

    SUN公司Java泛型编程文档

    Java泛型是Java编程语言中的一个关键特性,它在2004年随着JDK 5.0的发布被引入。这个特性极大地提高了代码的类型安全性和可读性,减少了在运行时出现ClassCastException的可能性。SUN公司的Java泛型编程文档,包括...

Global site tag (gtag.js) - Google Analytics