我希望BallUserInterfaceFactory
返回具有适当泛型的用户界面实例。我陷入下面的错误示例中:
绑定不匹配:BallUserInterfaceFactory类型的通用方法getBaseballUserInterface(BASEBALL)不适用于参数(BALL)。推断的类型BALL不能有效替代有界参数
public class BallUserInterfaceFactory {
public static <BALL extends Ball> BallUserInterface<BALL> getUserInterface(BALL ball) {
if(ball instanceof Baseball){
return getBaseballUserInterface(ball);
}
//Other ball types go here
//Unable to create a UI for ball
return null;
}
private static <BASEBALL extends Baseball> BaseballUserInterface<BASEBALL> getBaseballUserInterface(BASEBALL ball){
return new BaseballUserInterface<BASEBALL>(ball);
}
}
我了解它不能保证BALL是棒球,因此getBaseballUserInterface方法调用上存在参数类型不匹配的情况。
如果我在getBaseballUserInterface方法调用中强制转换了ball参数,则会收到错误消息:
类型不匹配:无法从转换
BaseballUserInterface<Baseball>
为BallUserInterface<BALL>
因为它不能保证我返回的是相同类型的BALL。
我的问题是,应对这种情况的策略是什么?
(为完整起见,这是示例中所需的其他类)
public class Ball {
}
public class Baseball extends Ball {
}
public class BallUserInterface <BALL extends Ball> {
private BALL ball;
public BallUserInterface(BALL ball){
this.ball = ball;
}
}
public class BaseballUserInterface<BASEBALL extends Baseball> extends BallUserInterface<BASEBALL>{
public BaseballUserInterface(BASEBALL ball) {
super(ball);
}
}
这个问题问得好。
你可以狠狠地投
return (BallUserInterface<BALL>)getBaseballUserInterface((Baseball)ball);
由于我们强迫,理论上答案是有缺陷的BASEBALL=Baseball
。
它由于删除而起作用。实际上,这 取决于 擦除。
我希望有一个更好的答案是 安全的 。
工厂-创建对象而不向客户机公开实例化逻辑,并通过公共接口引用新创建的对象。是工厂方法的简化版本 工厂方法-定义一个创建对象的接口,但让子类决定实例化哪个类,并通过公共接口引用新创建的对象。 抽象工厂-提供了创建相关对象家族的接口,而无需显式指定它们的类。 null
我有一个通用接口处理程序 我可以有n个这个接口的实现。假设我现在有以下两个实现。一个处理字符串对象,另一个处理日期 我想写一个工厂,它将根据类类型返回处理程序实例。比如: 我在这个工厂里遇到了以下错误: 类型不匹配:无法从转换为
本文向大家介绍轻松掌握Java工厂模式、抽象工厂模式,包括了轻松掌握Java工厂模式、抽象工厂模式的使用技巧和注意事项,需要的朋友参考一下 在面向对象编程的程序设计中,我们最常见的操作就是new对象,但在创建一个新对象的过程中,会有一些问题,比如我们需要注意创建新对象的实现细节,初始化一些必要的参数等。这样会让我们在讲更多的心思放在对象的创建上,而不是程序逻辑的实现上,严重拖延了我们的程序开发效率
我想知道在Spring框架中使用依赖注入的工厂模式的当前最佳实践是什么。我想知道工厂模式在使用Spring依赖注入的情况下是否仍然适用。我做了一些搜索,看到了一些过去的讨论(依赖注入vs工厂模式),但似乎有不同的观点。 我在一些现实生活中的项目中看到使用Map来保存所有的bean,并依靠自动装配来创建这些bean。当需要bean时,它使用密钥通过map获取它。 但是我看到这两种方法有些不同。 使用
本文向大家介绍Java设计模式之工厂模式分析【简单工厂、工厂方法、抽象工厂】,包括了Java设计模式之工厂模式分析【简单工厂、工厂方法、抽象工厂】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java设计模式之工厂模式。分享给大家供大家参考,具体如下: 一、 简单工厂 先来思考一个问题。我们平时写程序时,会有这种情况,A对象里面需要调用B对象的方法,这时我们使用的一般是new关键字来创建
主要内容:介绍,实现,Shape.java,Rectangle.java,Square.java,Circle.java,ShapeFactory.java,FactoryPatternDemo.java工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 介绍 意图:定义一个创建对象的接口,让其子