系统框架:一棵"命令"树,一棵"数据"树,命令树的根,即顶端元素是一个抽象类或接口,对外提供一个 execute 方法,但是这个方法的返回类型会因为命令的不同而不同,在这里举两个个实例,以学生选课来说。
命令一、学生选的课的列表 GetMyCourseCommand 命令的 execute() 方法应返回一个 List。
命令二、是不是选了某一个课程 CourseIsSelectedCommand 命令的 execute() 方法返回一个 Boolean。
这样的话,我的接口会定义成:
public interface Comamnd<T>{
public T execute();
}
由于我不想让客户端知道自己到底调用了哪一个命令,于是写一个工厂来生产 Command,由于是工厂,所以 getCommand() 方法将被设置成 static 的,很简单,我犯不着每次想得到一个 Command 都创建一个 Factory 对象。
这样,客户端要做的,就是根据需求创建不同的 Data 对象,并将 data 对象传入工厂方法,刚才提及的 getCommand() 的完整定义是
public static Command getCommand(Data d);
至此,客户端在处理上述例子时对应应该做的就是:
例子一、
Data d = new GetMyCourseData(params...);
Command<List> cmd = CommandFactory.getCommand(d);
List<Course> list = cmd.execute();
例子二、
Data d = new CourseIsSelectedData(params...);
Command<Boolean> cmd = CommandFactory.getCommand(d);
boolean isSelected = cmd.execute();
客户端好像挺清晰的,但是 Java 的泛型却提示了警告,在中间那行生产Command对象的代码那。
试过N多方法,除了 new 一个工厂对象出来,并将 getCommand 改为成员方法外,都无法消除这个警告。当然,我也不确定这个做法是不是有点设计过度 :-(
这个警告能消除吗?
<怎么预览的时候代码多个几个?>
分享到:
相关推荐
Java泛型是Java编程语言中的一个关键特性,它在2004年随着JDK 5.0的发布被引入,极大地增强了代码的类型安全性和重用性。本篇文章将带你入门Java泛型,通过实例深入理解其核心概念。 1. **泛型的基本概念** - 泛型...
Java泛型是Java编程语言中的一个重要特性,它在2004年随着Java SE 5.0的发布而引入。这个特性允许程序员在定义类、接口和方法时声明类型参数,从而增强了代码的类型安全性和重用性。通过使用泛型,我们可以编写更加...
Java泛型是Java编程语言中的一个关键特性,它在2004年随着Java SE 5.0的发布而引入。泛型允许程序员在代码中使用类型参数,从而增加了代码的类型安全性和重用性。它能够帮助我们避免在运行时出现ClassCastException...
感谢所有为Java泛型做出贡献的人们,包括设计者、实现者以及提供反馈和支持的社区成员。泛型是Java语言的一个重要特性,极大地提高了代码的质量和可维护性。 以上就是基于给定文件信息对Java 1.5泛型指南的主要知识...
3. **潜在的性能收益**:虽然Java泛型的初始实现并未直接提升运行时性能,但其为编译器提供了更多的类型信息,为未来JVM的优化提供了可能性。例如,编译器可能能够更有效地处理泛型代码,减少运行时的检查。 4. **...
Java 泛型是Java编程语言中的一个重要特性,它在Java SE 5.0版本中引入,极大地提高了代码的类型安全性和重用性。泛型允许我们在定义类、接口和方法时,使用一种类型参数,而不是具体的类型。这样做的好处在于,我们...
Java泛型是Java编程语言中的一个关键特性,它在2004年随着JDK 5.0的发布被引入,极大地增强了类型安全性和代码可读性。泛型允许我们在编写类、接口和方法时指定一种或多种类型,使得编译器能够检查代码中对象的类型...
Java泛型是自Java 5版本引入的一种强大的类型系统特性,它允许我们在编程时指定容器(如列表、集合等)所存储的数据类型。这增强了代码的类型安全性,减少了强制类型转换,并提供了更好的编译时错误检测。在Java中,...
Java泛型是Java编程语言中的一个关键特性,它在2004年随着JDK 5.0的发布被引入,极大地增强了类型安全性和代码可读性。泛型允许程序员在定义类、接口和方法时指定类型参数,使得在编译时期就能检查类型错误,而不再...
感谢所有为Java泛型设计做出贡献的人们,他们的工作极大地提高了Java语言的灵活性和安全性。 以上是对Java 1.5泛型指南中文版的一些核心概念和关键知识点的总结。这些知识点涵盖了从基础到高级的泛型使用技巧,对于...
Java5.0泛型编程是Java开发中的一个重要里程碑,它引入了一种强大的类型系统机制,大大增强了代码的类型安全性,并减少了在编译期间和运行时出现的类型转换错误。这一特性使得开发者能够在编写代码时就能明确指定...
Java 1.5 泛型是Java编程语言中的一项重要特性,它于2004年发布,极大地提升了代码的类型安全性和可读性。泛型允许开发者在类、接口和方法中使用类型参数,从而在编译时就能检查类型错误,避免了运行时的类型转换...
Java泛型是Java编程语言的一个重要特性,允许在编译时期提供类型安全,确保不同类型的对象在集合中独立存在,避免了类型转换错误。泛型的主要目的是减少类型转换,提供编译期类型检查以及消除类型安全警告。Java泛型...
在Java编程语言中,"java不支持创建泛型数组(1)"这个标题揭示了一个重要的概念,即Java不直接允许我们创建带有类型参数的泛型数组。这是因为Java的泛型是类型擦除的,这意味着在编译后,所有的泛型信息都会被移除,...
当我们尝试将不兼容的类型放入泛型集合时,编译器会立即发出警告。 2. 性能提升:由于泛型集合不需要在运行时进行类型检查和转换,因此在处理大量数据时,它们通常比非泛型集合更快。 3. 易于使用:泛型集合提供了...
Java泛型是Java编程语言中的一种特性,它允许在数据结构(如集合)中存储特定类型的元素,从而提供了编译时的类型安全性和更清晰的代码。泛型引入的主要目标是消除强制类型转换的需要,减少类型转换带来的潜在错误,...
例如,对于泛型警告,可以尝试使用更具体的数据类型;对于过时API的警告,可以查找并应用更新的替代API;对于序列化警告,可以显式地定义`serialVersionUID`。通过这种方式,不仅可以消除警告,还能提高代码的质量...
Java泛型是一种编程技术,它提供了编写代码时对数据类型进行参数化的机制。泛型的关键概念包括类型形参和类型实参。类型形参是在定义类、接口时使用的占位符,它在声明变量或创建对象时需要被实际的类型参数(类型...