`
gtssgtss
  • 浏览: 17331 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

利用泛型进行类型检查

阅读更多
public interface SQLer<S,A,R> {
    void setSQL(S sql);
    void setArgs(A args);
    R getResult();
}
public interface ArgsCreator<A> {
    A createArgs();
}


假设需要两个接口进行协作,但如果只这样定义,无法获得类型检查,因此,可以这样定义

public interface SQLer<S,A,R> {
    void setSQL(S sql);
    void setArgs(A args);
    R getResult();
}
public interface ArgsCreator<A,E extends SQLer<?,A,?>> {
    A createArgs();
}
分享到:
评论
3 楼 beginLi 2011-02-23  
public interface ArgsCreator<A,E extends SQLer<?,A,?>> {  
    A createArgs();  



是什么语法,大哥
2 楼 cclsw07 2011-02-21  
这么无脑的广告?
1 楼 dsjt 2011-02-21  


public interface SQLer<S,A,R> {
    
}
public interface ArgsCreator<A,E extends SQLer<?,A,?>> {
   
}

SQLer<?,A,?>
原来泛型可以这样写

相关推荐

    泛型类型转换Demo

    在Java编程语言中,泛型是...通过"泛型类型转换Demo",我们可以学习到如何在实际项目中有效地利用泛型进行类型安全的编程,以及如何处理各种泛型相关的转换和操作。熟练掌握这些知识将有助于提高代码的质量和可维护性。

    java 泛型类的类型识别示例

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

    Java泛型类型擦除后的补偿

    - 尽管泛型在运行时不存在,但编译器会进行严格的类型检查。如果尝试插入不匹配的类型,编译器会抛出错误。 - 例如,尝试向 `List&lt;String&gt;` 添加一个整数会导致编译错误,确保了类型安全。 3. **通配符**: - ...

    java泛型的使用

    泛型的主要目标是允许在编译时检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。在Java中,泛型主要体现在以下几个方面: 1. 类:你可以创建泛型类,如`ArrayList&lt;T&gt;`,其中`T`代表一个类型...

    Java中的泛型

    3. **提高程序性能**:由于在编译阶段就进行了类型检查,因此减少了运行时的类型检查需求,从而提高了程序的执行效率。 #### 示例 考虑以下两种方式创建一个列表来存储苹果: ```java // 使用泛型 List&lt;Apple&gt; ...

    Java泛型指南

    对于数组,泛型类型不能用作数组的元素类型,这是因为数组的类型是在编译时确定的,而泛型类型信息在运行时被擦除。 #### 类字面量作为运行时类型令牌 在某些情况下,我们需要在运行时确定一个对象的类型,这时...

    关于C#、java泛型的看法

    C#的泛型在类型检查和性能方面可能更胜一筹,而Java的泛型则在类型擦除和向后兼容性上有其独特之处。选择哪种语言的泛型取决于具体项目的需求和开发环境。了解并熟练掌握这两种语言的泛型特性,对于提升开发效率和...

    java泛型学习

    然而,通过使用泛型,编译器可以在编译阶段进行类型检查,确保插入和提取的数据类型匹配,从而避免运行时错误。 泛型的类型擦除是Java实现泛型的一个关键特性。这意味着在编译完成后,Java字节码中并不包含泛型的...

    ASP.NET 的泛型实例

    然而,ArrayList存在一些不足,例如它存储的对象需要进行强制类型转换,这可能导致运行时错误,而且由于类型信息的缺失,编译器无法提供足够的类型检查。泛型集合如List则弥补了这些不足,T代表一个类型参数,可以在...

    C#泛型学习和理解代码示例

    泛型集合(如`List&lt;T&gt;`)与非泛型集合(如`ArrayList`)相比,提供了更好的类型检查和性能。泛型集合避免了非泛型集合中的类型转换开销。 综上所述,C#泛型是一个强大的工具,它提高了代码的灵活性、复用性和效率...

    SSH泛型代码实例

    - **结果映射**:在配置Struts2的Result类型时,可以利用泛型来指定Action方法的返回类型,如`${successUrl}&lt;/result&gt;`。 3. **Hibernate框架中的泛型** - **Hibernate Session**:虽然Hibernate的核心API不直接...

    java泛型指南 经典

    由于类型擦除的存在,我们不能直接对泛型类型的实例执行 `instanceof` 检查。例如: ```java List&lt;String&gt; stringList = new ArrayList(); if (stringList instanceof List) { // 错误 // ... } ``` ##### 7.3 ...

    .net 中的泛型示例

    这意味着在ArrayList中存储对象时,类型检查是在运行时进行的,可能导致性能损失和潜在的类型错误。随着.NET Framework 2.0的发布,泛型的引入提供了更好的解决方案——List。 2. List&lt;T&gt;:这是.NET中的泛型列表,...

    泛型实现小例

    在实际应用中,我们还可以利用泛型的边界限制,如`&lt;? extends Number&gt;`表示可以接受任何Number子类的类型。这样,我们就可以编写一个方法,处理Integer、Double等Number子类的对象,而无需知道具体的类型。 此外,...

    java 多态的泛型实现

    这种机制确保了泛型与Java的现有类型系统兼容,但同时也意味着无法在运行时进行泛型相关的检查。 总之,Java中的多态性和泛型相结合,极大地提高了代码的复用性和安全性。通过泛型,我们可以创建类型安全的容器和...

    很强大的泛型委托实例

    在传递和调用委托时,编译器会进行类型检查,避免了运行时类型转换的错误。 4. **事件处理**:泛型委托也可以用于事件处理。通过定义泛型事件委托,我们可以创建能够处理不同类型的事件数据的事件处理器。 5. **...

    JAVA泛型教程(帮你解决学习泛型的苦恼)

    在没有泛型的情况下,我们通常需要在添加元素时进行类型检查,或者在取出元素时进行类型转换,这增加了潜在的运行时错误风险。例如,`ArrayList al1` 可以存储任何类型的对象,取出时必须强制转换。而使用泛型如 `...

    泛型集合泛型集合泛型集合

    虽然两者都提供参数化类型的支持,但C#泛型在语法上更为简洁,且在实现上,C#的类型替换是在运行时完成的,这意味着泛型类型信息得以保留。与C++模板相比,C#泛型不支持一些高级特性,如非类型模板参数、显式或部分...

Global site tag (gtag.js) - Google Analytics