Java基础(极客)——19、Java面向对象之泛型(补充)

package com.zhh.java.fanxing;


/**
 * 1、Java面向对象之泛型-认识泛型
 * 1、泛型是在jdk1.5之后的新功能
2、泛型可以解决数据类型的安全性问题,他的主要原理,
是在类声明的时候通过一个标识表示类中某个属性的类型
或者是某个方法的返回值及参数类型;
 * 
 */


public class FanXingDemo1 {
    public static void main(String[] args) {
        Method2();
    }


    public static void Method1() {
        //需要时String就是String
        //需要时int就是int
        MyEntity<String> eMyEntity = new MyEntity<String>();
        eMyEntity.setX("12");
        eMyEntity.setY("15");
        String x = eMyEntity.getX();
        String y = eMyEntity.getY();
        System.out.print(x + ":" + y);


    }


    public static void Method2() {
        MyEntity<Integer> eMyEntity = new MyEntity<Integer>();
        eMyEntity.setX(22);
        eMyEntity.setY(25);
        int x = eMyEntity.getX();
        int y = eMyEntity.getY();
        System.out.print(x + ":" + y);


    }
}//class


/**
 *实体类 
 *
 */
class MyEntity<T> {
    private T x;
    private T y;


    public MyEntity() {
    }


    public T getX() {
        return x;
    }


    public void setX(T x) {
        this.x = x;
    }


    public T getY() {
        return y;
    }


    public void setY(T y) {
        this.y = y;
    }


}



package com.zhh.java.fanxing;


/**
 *2、Java面向对象之泛型-构造方法中使用
 * 构造方法使用泛型
 */

public class FanXingDemo2 {
    public static void main(String[] args) {
        MyGouZao<String> gouZao = new MyGouZao<String>("构造方法中使用泛型");
        System.out.println(gouZao.getValue());


    }
}//class


/**
 *实体类 
 *
 */
class MyGouZao<T> {
    private T value;


    MyGouZao(T value) {
        this.value = value;
    }


    public T getValue() {
        return value;
    }


    public void setValue(T value) {
        this.value = value;
    }


}



package com.zhh.java.fanxing;


/**
 * 3、Java面向对象之泛型-指定多个泛型
 * 使用多个泛型
 */

public class FanXingDemo3 {
    public static void main(String[] args) {
        MyEntity2<String, Integer> entity = new MyEntity2<String, Integer>();
        entity.setFanXingK("字符串");
        entity.setFanXingT(15);
        System.out.println(entity.getFanXingK() + ":" + entity.getFanXingT());
    }
}//class


/**
 *实体类 
 *
 */
class MyEntity2<K, T> {
    public K fanXingK;
    public T fanXingT;


    public K getFanXingK() {
        return fanXingK;
    }


    public void setFanXingK(K fanXingK) {
        this.fanXingK = fanXingK;
    }


    public T getFanXingT() {
        return fanXingT;
    }


    public void setFanXingT(T fanXingT) {
        this.fanXingT = fanXingT;
    }


}



package com.zhh.java.fanxing;


/**
 * 4、Java面向对象之泛型-通配符
   通配符的使用
 * 
 */



public class FanXingDemo4 {
    public static void main(String[] args) {
        MyEntity4<String> entity4 = new MyEntity4<String>();
        entity4.setKey("leifeng");
        tell(entity4);
    }


    /**
     * 
     *通配符:?
     *就是无论什么类型都可以表示 
     *
     */
    private static void tell(MyEntity4<?> args1) {
        System.out.println(args1);
    }


}//class


class MyEntity4<T> {
    private T key;


    public T getKey() {
        return key;
    }


    public void setKey(T key) {
        this.key = key;
    }


    @Override
    public String toString() {
        return "getKey()=" + getKey();


    }


}



package com.zhh.java.fanxing;


/**
 *5、Java面向对象之泛型-泛型接口
   接口使用泛型
 * 
 */

interface MyInterface<T> {
    public void say();


}


class myShiXianLei<T> implements MyInterface<T> {
    public String info;


    public myShiXianLei(String info) {
        this.info = info;
    }


    public String getInfo() {
        return info;
    }


    public void setInfo(String info) {
        this.info = info;
    }


    @Override
    public void say() {
    }


}


public class FanXingDemo5 {
    public static void main(String[] args) {


        myShiXianLei<String> myShiXianLei = new myShiXianLei<String>("中国人");


        System.out.println(myShiXianLei.getInfo());
    }
}//class




package com.zhh.java.fanxing;


/**
 * 6、Java面向对象之泛型-泛型方法
   泛型方法
 * 
 */

class MyEntity6 {
    public <T> T method(T t) {
        return t;
    }


}


public class FanXingDemo6 {
    public static void main(String[] args) {
        //传字符串
        MyEntity6 entity6 = new MyEntity6();
        String s = entity6.method("aaaaaaa");
        System.out.println(s);
        //串int
        int i = entity6.method(12);
        System.out.println(i);


    }
}//class



package com.zhh.java.fanxing;


/**
 * 7、Java面向对象之泛型-泛型数组
   泛型数组
 * 
 */



public class FanXingDemo7 {


    public static void main(String[] args) {
        /**
         * 传入String
         */
        String[] strArrr = { "aaa", "bbb", "ccc" };
        tell(strArrr);
        /**
         * 传入int
         */
        Integer[] integerArrr = { 1, 2, 3 };
        tell(integerArrr);


    }


    public static <T> void tell(T arrr[]) {
        for (int i = 0; i < arrr.length; i++) {


            System.out.println(arrr[i]);
        }


    }
}//class





源码下载:
http://download.csdn.net/detail/zhaihaohao1/8741715
视频下载:(19、Java面向对象之泛型视频)
http://download.csdn.net/detail/zhaihaohao1/8741759

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值