java泛型边界_java泛型边界深入探讨,示例代码

java泛型边界深入探讨,示例代码

package org.rui.generics.bounds;

import java.awt.Color;

/**

* 边界

* 下面展示了边界基本要素。

* @author lenovo

*

*/

interface HasColor{java.awt.Color getColor();}

class Colored

{

T item;

Colored(T item){this.item=item;}

T getItem(){return item;}

java.awt.Color color(){return item.getColor();}

}

///

class Dimensio{public int x,y,z;}//尺码

//!class ColoredDimension

class ColoredDimension

{

T item;

ColoredDimension(T item){this.item=item;}

T getItem(){return item;}

java.awt.Color color(){return item.getColor();}

int getX(){return item.x;}

int getY(){return item.y;}

int getZ(){return item.z;}

}

///立方体///

interface Weight{int weight();}

class Solid

{

T item;

Solid(T item){this.item=item;}

T getItem(){return item;}

java.awt.Color color(){return item.getColor();}

int getX(){return item.x;}

int getY(){return item.y;}

int getZ(){return item.z;}

//

int getWeight(){return item.weight();}

}

//

class Bounded extends Dimensio implements HasColor,Weight

{

public int weight(){return 0;}

public Color getColor() {return null;}

}

//

public class BasicBounds {

public static void main(String[] args)

{

Solid solid=new Solid(new Bounded());

solid.color();

solid.getY();

solid.getWeight();

}

}

package org.rui.generics.bounds;

import java.awt.Color;

/**

* 边界

* 看上去包含可以通过继承消除沉余。

* 下面可以看到在继承的每个层次上添加边界的限制

* @author lenovo

*

*/

class holdItem

{

T item;

holdItem(T item){this.item=item;}

T getItem(){return item;}

}

interface HasColor2{java.awt.Color getColor();}

class Colored2 extends holdItem

{

//T item;

Colored2(T item){super(item);}

//T getItem(){return item;}

java.awt.Color color(){return item.getColor();}

}

///

class Dimensio2{public int x,y,z;}//尺码

class ColoredDimension2 extends Colored2

{

ColoredDimension2(T item){super(item);}

int getX(){return item.x;}

int getY(){return item.y;}

int getZ(){return item.z;}

}

///立方体///

interface Weight2{int weight();}

class Solid2 extends ColoredDimension2

{

Solid2(T item){super(item);}

int getWeight(){return item.weight();}

}

//

class Bounded2 extends Dimensio2 implements HasColor2,Weight2

{

public int weight(){return 0;}

public Color getColor() {return null;}

}

//

public class InheritBounds {

public static void main(String[] args)

{

Solid2 solid=new Solid2(new Bounded2());

solid.color();

solid.getY();

solid.getWeight();

}

}

package org.rui.generics.bounds;

import java.awt.Color;

import java.util.List;

/**

* 边界

* 多层次的示例

* @author lenovo

*

*/

interface SuperPower{}

//视觉

interface XRayVision extends SuperPower

{

void seeThroughWalls();

}

//听力

interface SuperHearing extends SuperPower

{

void hearSubtleNoises();

}

//闻

interface SuperSmell extends SuperPower

{

void trackBysmell();

}

//英雄;男主角

class SuperHero

{

POWER power;

SuperHero(POWER power){this.power=power;}

POWER getPower(){return power;}

}

//侦查

class SuperSleuth extends SuperHero

{

SuperSleuth(POWER power){super(power);}

void see(){power.seeThroughWalls();}

}

犬//

class CanineHero

extends SuperHero

{

CanineHero(POWER power){super(power);}

void hear(){power.hearSubtleNoises();}

void smell(){power.trackBysmell();}

}

///

class SuperHearSmell implements SuperHearing,SuperSmell

{

@Override

public void trackBysmell() {}

@Override

public void hearSubtleNoises() {}

}

///

class DogBoy extends CanineHero

{

DogBoy() {super(new SuperHearSmell());}

}

//

public class EpicBattle {

//bounds in generic methods

static

void userSuperHearing(SuperHero hero )

{

hero.getPower().hearSubtleNoises();

}

static

void sperFind(SuperHero hero)

{

hero.getPower().hearSubtleNoises();

hero.getPower().trackBysmell();

}

public static void main(String[] args)

{

DogBoy dogboy=new DogBoy();

userSuperHearing(dogboy);

sperFind(dogboy);

//YOU can do this

List extends SuperHearing> audioBoys;

//but you can 't do this:

//List extends SuperHearing & SuperSemll> audioBoys;

}

}

原文:http://blog.csdn.net/liangrui1988/article/details/28495219

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值