Java 为什么任何类型都可以扩展接口?
今天我迷上了Java多态性。我做了一些我认为不可能的事情。也就是说,我有一个扩展接口 我已创建空接口:Java 为什么任何类型都可以扩展接口?,java,interface,polymorphism,extends,parameterized,Java,Interface,Polymorphism,Extends,Parameterized,今天我迷上了Java多态性。我做了一些我认为不可能的事情。也就是说,我有一个扩展接口 我已创建空接口: public interface Figure {} public class Cross implements Figure{} 现在没什么新鲜事。然后,我用Parameter创建了参数化的类板,它扩展了我的接口 public class Board< T extends Figure > { T[][] board; } 令我惊讶的是,我居然做到了: Board
public interface Figure {}
public class Cross implements Figure{}
现在没什么新鲜事。然后,我用Parameter创建了参数化的类板,它扩展了我的接口
public class Board< T extends Figure > {
T[][] board;
}
令我惊讶的是,我居然做到了:
Board b = new Board<Cross>();
板b=新板();
请帮我解释一下这种奇怪的情况我对多态性略知一二,我明白十字架就是图形。 我不明白为什么任何类型都可以扩展接口,而实现interface(不是扩展接口)的howcome类作为扩展接口的参数是正确的。
请帮我解释一下这件事。谢谢。当你说
公共类Board
时,它意味着Board可以接受Figure
或Figure
的子接口或实现这些接口的任何类。所以,当你说:
public class Cross implements Figure{}
及
因此,任何实现二维图形的类也可以通过执行
public class Board< T extends Figure > {
T[][] board;
}
公共类板{
董事会;
}
您正在创建一个有界泛型类型,T
,它的超类应为类型图
正如线程中所解释的,定义一个扩展接口的泛型类型和一个类之间没有区别
编译器要确保的是,当您创建Board
时,T
将随任何具体类一起提供,扩展Figure
或实现Figure
实际上您没有扩展接口。您只需创建一个类型为Cross的泛型类。您的类的定义仅指定参数化类型必须从Figure派生,即实现Figure或它的派生。好的,另一个接口可以扩展另一个接口。。因此,T扩展图
可能检查T是一种接口类型。。但由于类型擦除,我不确定
public interface TwoDimensionalFigure extends Figure{}.
public class Board< T extends Figure > {
T[][] board;
}