interface Flag{
}
class Cont implements Flag{
private String name;
private int age;
public Cont(String name,int age){
this.name=name;
this.age=age;
}
public String toString(){
return "姓名:"+this.name+" 年龄:"+this.age;
}
}
class Cont2 implements Flag{
private String address;
private String phone;
public Cont2(String address,String phone){
this.address=address;
this.phone=phone;
}
public String toString(){
return "地址:"+this.address+" 电话:"+this.phone;
}
}
class Person <T extends Flag>{
private T info;
public Person(T info){
setInfo(info);
}
public void setInfo(T info){
this.info=info;
}
public T getInfo(){
return this.info;
}
public String toString(){
return "info:\n"+getInfo();
}
}
public class GenericsDemo04{
public static void main (String[] args) {
Cont cont=new Cont("张三",21);
Cont2 cont2=new Cont2("杭州","78067333");
Person<Cont> person=new Person<Cont>(cont);
Person<Cont2> person2=new Person<Cont2>(cont2);
System.out.println (person);
System.out.println (person2);
}
}
分享到:
相关推荐
在Spring4框架中,开发者们迎来了一项重要的更新——更优的Java泛型操作API。这一新特性极大地提升了代码的可读性和可维护性,同时也为开发者提供了更强大的工具来处理泛型类型。本文将深入探讨Spring4在这个领域所...
本文将详细介绍如何在C++中进行JSON文件的读写操作,特别是利用只引用头文件的方式,并且提供泛型接口,使得操作更加简便。 首先,我们需要一个C++库来处理JSON,例如nlohmann/json。这个库的特点是仅需包含头文件...
java中的泛型应用度极广,每一个web应用都有它的身影,可见泛型重要性!
在Java中,集合框架的泛型操作包括添加、删除、查找和遍历元素。这些操作在运行时会进行类型检查,确保插入的元素与集合的泛型类型匹配。在"Demo"中,可能演示了如何通过泛型安全地操作Set等集合类。 7. **通配符*...
在“GenericTest”这个文件中,可能包含了使用泛型的实例代码,可能包括了对数组、集合或其他数据结构的泛型操作,以及如何利用泛型方法进行类型安全的操作。通过调试和运行这个程序,我们可以更直观地理解泛型的...
因此,所有的泛型操作都必须在编译时完成,以确保类型安全。 5. **边界通配符**:在某些情况下,我们可能希望允许任意类型,或者只允许某个类型的子集。Java提供了几种边界通配符,如`?`(无界通配符),`? extends...
泛型接口则定义了可以被任何类型实现的一组操作,这些类型可能是泛型类或其他类型。例如,我们可以定义一个泛型接口`IGenericCollection<T>`,要求实现它的类必须提供添加、删除和获取元素的方法: ```csharp ...
例如,“未检查的泛型类型操作”警告会在使用未指定类型的泛型操作时触发,提醒开发者确保类型安全。而“Missing @Override annotation”警告则鼓励开发者使用@Override注解来明确标识重写的方法,以防止无意的覆盖...
但是,通过巧妙地使用void指针和类型转换,我们可以模拟泛型栈的实现,使得同一个栈操作代码可以处理不同类型的数据。 泛型stack操作算法的实现主要涉及以下步骤: 1. **定义栈结构**:首先,我们需要定义一个栈...
} 告诉对哪个类操作,如不需要自定义扩展方法就作有一个构造方法。 泛型Service:GenericService.java 与泛型dao没有区别 Service :PersonService.java 直接继承。 泛型serviceimpl与serviceimpl实现和dao层...
NULL 博文链接:https://chaoyi.iteye.com/blog/2081903
这里的"通用扩展方法,通用转换(日期,泛型,字符串,数值)"主题涵盖了四个关键领域:日期处理、泛型操作、字符串操作和数值转换。接下来,我们将深入探讨这些领域的通用扩展方法。 1. **日期处理**: `...
然而,可以通过通配符和反射来实现对数组的泛型操作,尽管这样做可能会牺牲类型安全性和性能。 #### 2.6 通配符与类型参数的区别 类型参数(如`<T>`)是在类、接口或方法定义中使用的,用于创建参数化类型;而...
泛型的关键在于类型参数化,这意味着可以将操作的数据类型指定为一个参数。泛型的类型参数可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。 ### 泛型类 泛型类是指在定义类的时候引入类型...
2. **性能优化**:泛型集合避免了装箱和拆箱操作,直接操作值类型,从而提高了程序的执行效率。 #### 四、案例分析 为了更好地理解泛型集合与非泛型集合之间的差异,我们来看一个具体的例子。假设我们需要创建一个...
- **Hibernate Session**:虽然Hibernate的核心API不直接使用泛型,但在实际开发中,我们通常会使用Hibernate的SessionFactory和Session接口的泛型版本,如`SessionFactory.openSession()`,以确保操作的对象类型...
2. **消除类型转换**:使用泛型后,可以避免不必要的类型转换操作,使代码更加简洁明了。 3. **提升程序可读性**:泛型提供了更丰富的类型信息,使得代码的意图更为清晰。 4. **潜在性能优化**:虽然最初的实现中并...
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...
这样,我们可以创建 `List<int>`、`List<string>` 或任何其他类型的列表,确保类型一致性并避免装箱和拆箱操作。 ```csharp public class MyGenericClass { private T item; public MyGenericClass(T value) {...