泛型的实例化应用

package fanxing.demo;

import java.nio.charset.MalformedInputException;
import java.util.MissingFormatArgumentException;

/*
 * 需求:
 * 人 person - 信息类型 - (1、基本类型,2、联系方式,3、其他)
 * 思路:
 * 做一个信息的标识类,只要传递的是此接口的子类就可以设置为泛型类型
 * 
 */
//定义一个表示接口——信息
interface Info{
    //无方法
}
//定义一个联系方式的类,此类实现info 接口
class Contact implements Info{
    //三个属性  电话,地址,邮编
    private String number;
    private String address;
    private String zipcode;
    //构造方法为属性赋值
    public Contact(String number,String address,String zipcode){
        this.number = number;
        this.address = address;
        this.zipcode = zipcode;    
    }
    // getter setter 方法
    public void setnumber(String number){
        this.number = number;
    }
    public String getnumber(){
        return this.number;
    }
    public void seaddress(String address){
        this.address = address;
    }
    public String geaddress(){
        return this.address;
    }
    public void setzipcode(String zipcode){
        this.zipcode = zipcode;
    }
    public String getzipcode(){
        return this.zipcode;
    }
    //重写object类中的toString 方法,返回对象信息
    public String toString(){
        return "联系电话:"+this.number+"\n"+"联系地址:"+this.address+"\n"+"联系邮编:"+this.zipcode+"\n";
    }
}
//写一个类 个人的基本信息,实现info 接口
class Introduction implements Info{
    //三个属性 : 姓名,性别,年龄
    private String name;
    private String sex;
    private String age;
    //构造方法为属性赋值
    public Introduction(String name, String sex, String age) {
        super();
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "姓名:"+this.name+"\n"+"联系性别:"+this.sex+"\n"+"联系年龄:"+this.age+"\n";
    
}
}
//定义一个person类,person类中info 属性的类型使用泛型
class Person<T extends Info>{
    private T info;

    public Person(T info) {
        super();
        this.info = info;
    }

    public T getInfo() {
        return info;
    }

    public void setInfo(T info) {
        this.info = info;
        
    }
 //重写 toString 方法,返回info 属性中的toString 方法的内容
    @Override
    public String toString() {
        return this.info.toString();
    }
}
public class FanXingDemo6 {
    public static void main(String[] args) {
        //将contact类设置为泛型类型
        //Contact ct = new Contact("15507546429","lixinfih","789666");
      //Person <Contact> p  = new Person <Contact>(ct);
      //System.out.println(ct);
        //将instrution类设置为泛型类型
        Introduction id = new Introduction("wangyuanfang","女","24");
        Person <Introduction> p  = new Person <Introduction>(id);
        System.out.println(p);
        
    }
}

 

posted @ 2017-06-05 14:22  初学者,方圆几里  阅读(161)  评论(0编辑  收藏  举报