我正在阅读java第4版中的思想,我遇到了以下代码
class SuperHero<POWER extends SuperPower> {
POWER power;
SuperHero(POWER power) {
this.power = power;
}
POWER getPower() {
return power;
}
}我查看了这段代码的整个类定义,似乎找不到关键字的威力,所以我假设它是一个常量?在这种情况下,“权力”究竟是什么?
以下是整个类的定义
package tij4.generics;
//: generics/EpicBattle.java
//Demonstrating bounds in Java generics.
import java.util.*;
//Marker Interface
interface SuperPower {
}
interface XRayVision extends SuperPower {
void seeThroughWalls();
}
interface SuperHearing extends SuperPower {
void hearSubtleNoises();
}
interface SuperSmell extends SuperPower {
void trackBySmell();
}
class SuperHero<POWER extends SuperPower> {
POWER power;
SuperHero(POWER power) {
this.power = power;
}
POWER getPower() {
return power;
}
}
class SuperSleuth<POWER extends XRayVision> extends SuperHero<POWER> {
SuperSleuth(POWER power) {
super(power);
}
void see() {
power.seeThroughWalls();
}
}
class CanineHero<POWER extends SuperHearing & SuperSmell> extends
SuperHero<POWER> {
CanineHero(POWER power) {
super(power);
}
void hear() {
power.hearSubtleNoises();
}
void smell() {
power.trackBySmell();
}
}
class SuperHearSmell implements SuperHearing, SuperSmell {
public void hearSubtleNoises() {
}
public void trackBySmell() {
}
}
class DogBoy extends CanineHero<SuperHearSmell> {
DogBoy() {
super(new SuperHearSmell());
}
}
public class EpicBattle {
// Bounds in generic methods:
static <POWER extends SuperHearing> void useSuperHearing(
SuperHero<POWER> hero) {
hero.getPower().hearSubtleNoises();
}
static <POWER extends SuperHearing & SuperSmell> void superFind(
SuperHero<POWER> hero) {
hero.getPower().hearSubtleNoises();
hero.getPower().trackBySmell();
}
public static void main(String[] args) {
DogBoy dogBoy = new DogBoy();
useSuperHearing(dogBoy);
superFind(dogBoy);
// You can do this:
List<? extends SuperHearing> audioBoys;
// But you can't do this:
// List<? extends SuperHearing & SuperSmell> dogBoys;
}
} // /:~添加了信息:,我还查看了这个包中包含的不同类。他们中没有一个人定义了一种“力量”
发布于 2012-09-05 05:53:40
它只是一个泛型类型名称,就像T在java.util.List<T>中一样。作者刚刚为这种类型选择了一个更大的名称。
https://stackoverflow.com/questions/12275190
复制相似问题