`

泛型类的继承

阅读更多
//使用泛型化的Dao接口
public interface IBaseDao<T>{

public void save(T t);

public List<T> getAll();
...
}

//实现类XXBaseDaoImpl在实现IBaseDao<T>时,也需要提供泛型化的参数T
public class UserDaoImpl<User> implements IBaseDao<User>{

public void save(User t);

public List<User> getAll();

...
}


其实这样还看不出好处,如果有AbstractBaseDao则能看出


public interface IBaseDao<T>{
public void save(T t);
public List<T> getAll();
...
}
public abstract class AbstractBaseDao<T> implements IBaseDao<T>{
public void save(T t){
...
}
public List<T> getAll(){
...
}
...
}

则实现类什么都不写即可,
public class UserDaoImpl extends AbstractBaseDao<User>{

}

public class OrderDaoImpl extends AbstractBaseDao<Order>{

}

业务层接口也可以采用类似dao的写法:
public interface IBaseService<T>{
   public void save(T t);

   public List<T> getAll();
}

//业务层实现类采用Base<U,T extends BaseModel>的形式
public class BaseServiceImpl<E, D extends IBaseDao<E>> implements IBaseService<E> {
    //Dao接口变量,
    protected D dao;

    public void save(E e){
        ...
    }

  
    public List<E> getAll(){
          ....
    }
    //对dao接口变量进行setter和getter设置
   public void setDao(D dao) {
     this.dao = dao;
   }

   public D getDao() {
     return dao;
   }
}
public class Base<U,T extends BaseModel>还有这种用法
要求泛型T必须extends BaseModel


@Inherited的作用
@Inherited:允许子类继承父类的注解
http://zy19982004.iteye.com/blog/1979520
分享到:
评论

相关推荐

    c#使用 和 继承 泛型类

    本篇文章将深入探讨如何在C#中使用和继承泛型类。 首先,让我们理解什么是泛型类。泛型类是一种模板或蓝图,它定义了参数化类型,这些类型在类实例化时可以被具体的类型替换。在C#中,我们使用尖括号`&lt;&gt;`来声明泛型...

    java 继承非泛型类示例

    当我们谈论继承非泛型类时,意味着子类继承了一个没有使用泛型的父类。泛型是Java SE 5.0引入的新特性,用于提供类型安全和减少强制类型转换,但并不是所有类都必须使用泛型。 非泛型类通常定义为不包含类型参数的...

    java 继承泛型类示例

    当我们谈论“继承泛型类”时,这意味着一个类(子类)正在扩展一个已经定义了泛型的类(父类)。这样,子类可以利用父类的泛型特性,并根据需要定制其类型约束。 首先,我们来理解一下泛型的基本概念。泛型引入的...

    Java源码泛型类的继承应用.rar

    本资源“Java源码泛型类的继承应用.rar”着重探讨了泛型类在继承结构中的运用,这对于我们理解如何在多层继承体系中管理和操作不同类型的数据具有重要意义。 首先,让我们来了解泛型类的基本概念。泛型类是在定义类...

    浅谈c# 泛型类的应用

    - **继承具体类**:泛型类可以继承非泛型类,如`NodeConcrete&lt;T&gt; : BaseNode`。 - **封闭式构造继承**:泛型类可以从已经指定了类型参数的基类继承,如`NodeClosed&lt;T&gt; : BaseNodeGeneric&lt;int&gt;`。 - **开放式构造...

    C#泛型类窗体继承设计器无法使用解决办法,解决案例Demo

    winform窗体继承泛型类时,设计器无法使用解决办法: 当我们使用winform程序时,winform窗体程序和控件程序都是可以通过设计器进行控件拖拽的,但如果我们继承了一个带有泛型的form基类.那么设计器是无法使用的.

    泛型与泛型继承

    在本文中,我们将深入探讨泛型的基本概念、泛型类的定义与使用,以及泛型继承的实现机制。 ### 泛型概述 泛型是一种允许编译时类型检查的语言特性,它使得程序员能够编写类型安全的通用类和方法,而无需进行显式的...

    Java泛型的继承和实现操作示例

    Java泛型的继承和实现操作示例主要介绍了Java泛型的继承和实现操作,结合实例形式分析了Java泛型类的继承以及泛型接口的实现相关操作技巧。 一、泛型类的继承 在Java中,泛型类可以被继承,子类可以继承父类的泛型...

    泛型全记录

    1. **继承**:泛型类可以被其他泛型类继承。子类可以使用与父类相同的类型参数,也可以添加新的类型参数。 示例: ```java public class Base&lt;T&gt; { ... } public class Sub&lt;T&gt; extends Base&lt;T&gt; { ... } ``` 2...

    Java 泛型最全指南(定义和使用+继承泛型类/实现泛型接口+泛型的边界+通配符+类型擦除)

    继承泛型类和实现泛型接口可以在一定范围内实现代码的复用。例如,`public class SubHolder&lt;T&gt; extends Holder&lt;T&gt; { ... }` 继承了 `Holder` 泛型类,而 `public class ImplA&lt;T&gt; implements A&lt;T&gt; { ... }` 实现了 `A...

    十三、集合进阶 泛型的继承和通配符

    本节将深入探讨“集合进阶”中的泛型继承和通配符这两个关键概念。 首先,让我们了解泛型。泛型是Java 5引入的一项特性,它允许在类、接口和方法中使用类型参数,从而实现参数化类型。通过使用泛型,我们可以在编译...

    .Net 2.0 泛型高级编程(Professional .NET 2.0 Generics )

    8. 泛型与继承:泛型类可以被其他泛型类或非泛型类继承,这使得我们可以构建复杂的类层次结构,例如 `class Derived&lt;T&gt; : Base&lt;T&gt;`。 9. 泛型与多态:泛型不仅提供了静态类型的安全性,还支持多态性。通过泛型,...

    深入解析C#中的泛型类与泛型接口

    3. **继承开放式构造泛型类**:泛型类可以继承开放式构造的泛型类,但必须提供所有未指定的类型参数,如`class Derived, U&gt; : Base, U&gt;`。 需要注意的是,非泛型类不能从开放式构造的泛型类继承,因为无法在编译时...

    winform泛型类窗体继承解决办法C#小Demo

    winform窗体继承泛型类时,设计器无法使用解决办法: 当我们使用winform程序时,winform窗体程序和控件程序都是可以通过设计器进行控件拖拽的,但如果我们继承了一个带有泛型的form基类.那么设计器是无法使用的. 这时...

    minboo#JavaSE#3.泛型在继承上的体现1

    泛型在继承上的体现:1. 泛型在继承方面的体现虽然类A是类B的父类,但是G 和G二者不具备子父类关系,二者是并列关系。public void show1(Lis

    泛型介绍

    3. **泛型继承**:泛型类可以被另一个泛型或非泛型类继承,从而实现更加灵活的类层次结构设计。这在需要创建具有相同行为但针对不同类型的类时非常有用。 #### .NET Framework中的泛型应用 .NET Framework广泛采用...

    数据工厂泛型类源码

    3. **类型约束**:如果需要对`T`进行特定的限制,比如它必须继承自某个基类或实现某个接口,我们可以在泛型声明中添加类型约束,如`class FreeFlyDataFactory&lt;T extends IData&gt;`。 4. **使用工厂**:在客户端代码中...

    ASP.NET MVC 将IList导出Excel文档的泛型类(继承自ActionResult)

    ASP.NET MVC 将IList导出Excel文档的泛型类(继承自ActionResult)

    SUN公司Java泛型编程文档

    7. **泛型和多态**:泛型类可以作为其他泛型类或非泛型类的参数,实现方法的多态性,比如`List&lt;List&lt;String&gt;&gt;`。 8. **限制性泛型**:通过泛型约束,可以限制类型参数必须遵循的规则,如`public class Box...

Global site tag (gtag.js) - Google Analytics