`
fancyboy2050
  • 浏览: 240530 次
  • 性别: Icon_minigender_1
  • 来自: 皇城根儿下
社区版块
存档分类
最新评论

泛型类的编译导致的错误

阅读更多
这是前段时间遇到的一个问题,确定是因为泛型编译导致的,但是特别详细的原因还没有深入研究过,遇到的同志可以看下哈。

@Controller
public class UserController {	
    @Autowired
    UserManager userManager;

上面的controller中自动注入了一个UserManager,该manager是一个泛型类。

public interface UserManager extends GenericManager<User, Long> {}

public interface GenericManager<T, PK extends Serializable> {
    T get(PK id);
}
泛型接口中有一个get的接口

上面该manager原始的泛型格式,因为针对用户我们有了一个分库的需求,于是本地开发进行

public interface UserManager extends GenericShardManager<User> {}

如上:本地的UserManager继承的泛型接口被改变了;

就在这时,来了一个着急上线的新的小需求,改变UserController中一个方法中的一点业务逻辑,改完编译,将编译后的UserController发布测试,报错,找不到get方法。

why?在我的UserController中只是引用了一个UserManager的接口,然后通过autowire自动将实例注入,启动时无错误,使用的时候别的method都可以正常使用,但是旧的泛型接口中的方法一律提示nomethod异常。
分享到:
评论

相关推荐

    浅谈c# 泛型类的应用

    在继承开放式构造基类时,子类必须指定类型参数,否则会导致编译错误。 3. **类型参数的指定和约束** - **子类中指定类型参数**:子类必须在继承时指定基类的类型参数,如`Node1 : BaseNodeGeneric&lt;int&gt;`是正确的...

    c#泛型详解,泛型方法,泛型类

    例如,ArrayList可以存储任何类型的对象,这可能导致在运行时出现InvalidCastException,因为编译器无法在编译阶段检测类型错误。如下所示的ArrayList示例就展示了这个问题: ```csharp ArrayList list = new ...

    集合类泛型类

    2. **编译时错误检测**:由于类型检查在编译阶段完成,许多类型相关的错误会在代码编写时被发现,而不是在运行时。 3. **消除 casts**:泛型使得在添加和取出元素时不需要显式进行类型转换,简化了代码。 4. **...

    Java基础篇:泛型.pdf

    泛型是Java编程语言中用于减少类型转换错误和增强代码安全性的机制,它允许在定义类、接口和方法时使用类型参数。通过这种方式,可以在编译时期捕获那些只有在运行时期才会暴露的类型错误,提高了代码的健壮性。 ...

    个人学习C#泛型总结ppt

    2. **类型安全**:泛型提供编译时类型检查,确保集合中的元素始终是预期类型,避免了在运行时可能出现的类型不匹配错误。 3. **代码重用**:泛型类可以使用不同的类型实例化,从而实现代码的复用,减少了重复编写...

    Java泛型_Java中的泛型结构_

    - 由于类型擦除,泛型数组不能直接通过 `new T[10]` 创建,这会导致编译错误。 7. 泛型与多态: - 泛型类和泛型方法可以很好地与多态结合,如 `List&lt;? extends Animal&gt;` 可以接受 `Dog` 和 `Cat` 的列表。 - ...

    java 泛型

    1. **类型擦除**:Java泛型在编译后会被擦除,这意味着在运行时,泛型类和非泛型类是相同的。类型参数被替换为它们的边界类型(通常是`Object`)。因此,泛型的主要优势在于编译时的检查,而不是运行时的性能提升。 ...

    java泛型指南 经典

    Java 泛型的一个重要特性是类型擦除,这意味着在编译之后,所有的泛型信息都会被擦除。因此,在运行时,所有泛型类型看起来都像是它们的基础类型。例如,`List&lt;Integer&gt;` 和 `List&lt;String&gt;` 在运行时都表现为 `List`...

    泛型笔记学习2009

    1. **类型安全**:编译器可以在编译阶段检测到类型错误,而不是在运行时抛出异常。 2. **消除类型转换**:使用泛型后,可以避免不必要的类型转换操作,使代码更加简洁明了。 3. **提升程序可读性**:泛型提供了更...

    实例185 - 自定义泛型化数组类

    泛型通过类型擦除实现,这意味着在编译后,所有的类型参数都会被替换为它们的边界或者Object,但编译器会进行类型检查,确保在运行时不会出现类型错误。 接下来,我们讨论自定义泛型数组类。在Java中,由于历史原因...

    第十三章 泛型程序设计

    泛型的主要目标是提供一种方式来限制容器对象只能存储特定类型的元素,避免了强制类型转换的麻烦,并且在编译时期就能发现可能的类型不匹配错误。 1. **泛型的基本概念** - **类型参数(Type Parameter)**: 在类...

    vs2008 泛型 的使用 实例

    尝试添加非int类型(如double)的值将导致编译错误,从而确保了类型安全。 泛型集合不仅限于List,还有Dictionary, TValue&gt;、Queue、Stack等多种类型,可以根据实际需求选择合适的泛型容器。这些泛型类提供了丰富的...

    java泛型的应用

    而泛型则允许我们在创建集合时指定其能够存储的类型,从而在编译时期就捕获类型不匹配的错误,避免了运行时异常。 以ArrayList为例,`ArrayList&lt;E&gt;`中的`E`是类型参数变量,代表某种未知的类型,通常被称作"元素...

    java泛型技术之发展

    3. 泛型的引入:Java SE 5.0正式引入泛型,允许在类、接口和方法中声明参数化类型,使得编译器能够在编译时期检测类型错误,提高了代码质量。 4. 普及与优化:随着Java泛型的广泛应用,JDK 6和7对其进行了进一步...

    Java中的泛型

    1. **类型安全**:泛型使得在编译阶段就能检测到类型错误,从而避免了运行时的ClassCastException。 2. **减少不必要的类型转换**:使用泛型可以避免在运行时进行显式类型转换,提高了代码的简洁性和可读性。 3. **...

    C# 2.0中泛型编程思想分析

    例如,尝试将非整数值推入`Stack&lt;int&gt;`会导致编译错误。 2. **性能提升**:泛型消除了值类型与对象之间的装箱和拆箱操作,这可以避免不必要的内存分配和回收,从而提高程序性能。对于引用类型,由于不需要进行显式...

    深入浅出.NET泛型编程

    在.NET 1.0和1.1版本中,集合类如ArrayList并不提供类型安全,允许存储任何类型的对象,这可能导致运行时的类型转换错误。泛型的出现就是为了解决这个问题,它在编译时就确定了数据结构所使用的具体类型,从而避免了...

Global site tag (gtag.js) - Google Analytics