在收藏的一篇博客
“java泛型详解”http://lichaozhangobj.iteye.com/blog/476911
上的泛型接口的实现方式,在此再看以代码,进行补充。
泛型接口定义完成之后,就要定义此接口的子类,定义泛型接口的子类有两种方法:
一种是
直接在子类后声明泛型,
另一种是直
接在子类实现的接口中明确地给出泛型类型。
一、在子类的定义上声明泛型类型
定义一个接口Info.java
interface Info<T> { //在接口上定义泛型
public T getVar() ;
}
实现接口的子类DemoImpl.java
class InfoImpl<T> implements Info<T> { //定义泛型接口的子类
private T var ;
public InfoImpl(T var){
this.setVar(var) ;
}
public T getVar() {
return var;
}
public void setVar(T var) {
this.var = var;
}
}
泛型接口的子类声明了与接口中同样的泛型标识。
主程序GenericsDemo.java
public class GenericsDemo {
public static void main(String args[]){
Info<Object> i = null;
i = new InfoImpl<Object>("perfy") ;
System.out.println("content:" + i.getVar());
}
}
二、直接在接口中指定具体类型
interface Info<T> { //在接口上定义泛型
public T getVar() ;
}
class InfoImpl implements Info<String> { //定义泛型接口的子类
private String var ;
public InfoImpl(String var){
this.setVar(var) ;
}
public String getVar() {
return var;
}
public void setVar(String var) {
this.var = var;
}
}
以上程序泛型接口的子类在实现接口时,直接在实现的接口处指定了具体的泛型类型String,这样在覆写Info接口中的getVar()方法时直接指明类型为String即可。
public class GenericsDemo {
public static void main(String args[]){
Info<String> i = null;
i = new InfoImpl("perfy") ;
System.out.println("content:" + i.getVar());
}
}
转:http://hi.baidu.com/foxholeme/blog/item/113f42add775e3c27cd92aa7.html
分享到:
相关推荐
泛型类和泛型方法可以提高代码的复用性,泛型接口确保了接口实现的一致性,而泛型委托则增强了函数式编程的能力。在实际项目中,熟练运用这些泛型特性可以显著提升代码质量,降低维护成本。通过`TUsingDemo`这样的...
2. **代码复用**:通过接口约束,你可以编写更通用的代码,适用于多种实现了相同接口的数据类型。 3. **设计模式实现**:接口约束常用于实现策略模式或访问者模式等设计模式,使得代码更加灵活和易于扩展。 在...
泛型接口与泛型类类似,但它们定义了必须由实现该接口的类或结构体遵循的契约,而不提供实现。例如,`IEnumerable<T>` 接口表示可枚举的集合,其中 T 代表集合中的元素类型。 ```csharp public interface ...
在C#中,泛型提供了一种方式,可以在不指定具体类型的情况下定义类、接口和方法,从而提高代码的复用性和灵活性。 首先,我们需要创建一个表示链表节点的泛型类Node,其中T是代表任何类型的占位符。这个类通常包含...
- `Myint` 类型实现了 `Comper` 接口,并定义了 `Lessthan` 方法来比较两个 `Myint` 实例。 5. **主函数**: - 创建了一个 `Sdata` 实例 `mydata`。 - 向 `mydata` 添加了多个 `Myint` 类型的元素,并打印排序后...
UML提供了两种方式来表示接口: 1. **棒棒糖表示法**:在棒棒糖表示法中,一个带有“棒棒糖”标记的箭头表示一个分类器提供某个接口。例如,`ProximitySensor` 类提供 `ISensor` 接口。而对于需要接口的情况,通常...
最近有个需求就是一个抽象仓储层接口方法需要SqlServer以及Oracle两种实现方式,为了灵活我在依赖注入的时候把这两种实现都给注入进了依赖注入容器中,但是在服务调用的时候总是获取到最后注入的那个方法的实现,这...
Java反射和泛型是两种强大的编程特性,它们在开发中有着广泛的应用,特别是在数据库操作的动态化场景下。本文将详细介绍如何结合这两种技术实现在Java中对MySQL、SQL Server或Oracle数据库进行动态的增删改查操作。 ...
接口(Interface)在Java中是一种定义行为的蓝图,而泛型接口则是接口与泛型的结合,它允许我们在接口中声明带有类型参数的方法。这样做可以确保任何实现了该接口的类都必须遵循相同的类型约束,提高代码的类型安全...
2. **泛型接口**:与泛型类类似,泛型接口也可以包含类型参数,如 `IGenericInterface<T>`。实现这个接口的类需要提供具体的类型。泛型接口允许我们定义一组通用的行为,而不用关心具体的数据类型。 3. **泛型方法*...
在实现泛型类集合时,我们还可以考虑提供其他接口的支持,如`Iterable<T>`,这将允许我们使用`for-each`循环遍历集合。实现`Iterable<T>`接口需要提供一个`Iterator<T>`实例,该实例能返回链表中的下一个元素并检查...
在C#编程中,泛型是一种强大的特性,它允许我们创建可重用的类型安全的代码,能够处理多种数据类型。泛型集合是利用泛型概念来构建的,可以存储任何类型的对象,同时保持编译时类型检查的安全性。本话题主要探讨如何...
泛型可以确保代码在操作不同类型的对象时保持类型安全,而接口则可以定义共同的行为规范,使得不同的类可以以相同的方式进行交互。 关于接口,Java中的接口允许定义一组方法,但不提供具体实现。类可以实现一个或多...
在Java编程语言中,泛型是一种强大的特性,它允许我们在编写代码时指定类型参数,从而提高了代码的灵活性、安全性和可重用性。本篇我们将深入探讨“泛型实现小例”这一主题,通过实际的例子来理解泛型的使用。 首先...
3)业务逻辑改变时,dao需要同时修改两个类文件(接口和实现类) 在本文中,我将为您展示如何避免再三地重复 DAO 代码。 在这里我建议项目最好使用一个共通的DAO,因为这样会为你省去非常多的类,而那些类里的...
在上述示例中,我们看到两个不同的场景,一个是非泛型的堆栈实现,另一个是使用.NET框架中的泛型集合。 1. 非泛型堆栈实现(StackInt类): 这个例子展示了如何为整型(int)创建一个堆栈。`StackInt`类包含`Push`...
通过这样的实现方式,我们可以创建一个灵活且可复用的分页解决方案,不仅适用于不同的数据源,还可以适应项目未来的扩展和变化。这个小程序展示了如何巧妙地结合ASP.NET的控件和泛型,以实现高效、易维护的分页功能...
3. **泛型接口**: 泛型接口与泛型类类似,但定义的是一个行为规范,而不是具体的实现。比如,我们可以定义一个`IGenericInterface<T>`,然后让其他类实现这个接口,提供对`T`的具体实现。 4. **泛型约束**: 在C#中...
C++作为一种强大的编程语言,在设计之初并未直接支持这种通用编程方式,而是通过后来引入的模板机制实现了这一目标。 #### 什么是泛型编程? 泛型编程是一种编程范式,旨在编写可应用于多种数据类型的代码。它允许...
泛型接口与泛型类相似,只是它们定义在接口中。例如,我们可以定义一个泛型的比较接口: ```java public interface Comparator<T> { int compare(T o1, T o2); } ``` 这个接口可以用于任何需要比较的场景,通过...