这些是我的蒙德尔人:
public class Accomodation {
...
}
而且
public class Attraction extends Accomodation {
...
private String openingTime;
}
我的Controller
类中有这个方法:
protected Accomodation getAccomodationByFormData(CrudView crudView) {
Accomodation accomodation = new Accomodation();
// setters
return accomodation;
}
在attractioncontroller
(扩展以前的controller
)中使用:
@Override
protected Accomodation getAccomodationByFormData(CrudView crudView) {
Attraction attraction = (Attraction) super.getAccomodationByFormData(crudAttractionView);
attraction.setOpeningTime(getOpeningTimeWithFormData());
return attraction;
}
在此attractioncontroller
的另一点中,我有:
...
Attraction attraction = (Attraction) getAccomodationByFormData(crudAttractionView); // throws ClassCastException
...
但这给了我:
线程“JavaFX Application thread”java.lang.ClassCastException:类Models.Accomodation不能强制转换为类Models.Intraction(Models.Accomodation和Models.Intraction在Controllers.CrudattractionController.GetAccomodationByFormData(CrudattractionController.java:302)在Controllers.CrudattractionController.lambda$ButtonConferMacLicked$4(CrudattractionController.java:143)在un.javafx.event.EventDispatchChainImpl.DispatchEvent(EventDispatchChainImpl.java:114)在javafx.base/com.sun.javafx.event.base/com.sun.javafx.event.dispatchEvent(BasicEventDispatchChainImpl.java:56)在javafx.base/com.sun.javafx.event.dispatchEvent(BasicEventDispatchChainImpl.dispatchEvent(trol.inputmap.inputmap.handle(inputmap.java:274)在javafx.base/com.sun.javafx.event.compositeEventHandler$normalEventHandlerRecord.handleBubblingEvent(compositeEventHandler.java:218)在javafx.base/com.sun.javafx.event.compositeEventHandler.dispatchBubblingEvent(compositeEventHandler.java:80)在tchEvent(EventDispatchChainImpl.java:114)在javafx.base/com.sun.javafx.event.basicEventDispatchEvent(BasicEventDispatchChainImpl.dispatchEvent(BasicEventDispatchChainImpl.java:56)在javafx.base/com.sun.javafx.event.event.dispatchEvent(EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)在java.base/java.security.accesscontroller.doprivileged(本机方法)javafx.graphics/com.sun.javafx.tk.quantum.glassvieweventhandler.lambda$HandleMoseEvent$2(Glassvieweventhandler.java:434)javafx.graphics/com.sun.javafx.tk.quantum.quantumtoolkit.runwithoutrenderlock(quantumtoolkit.java:390)
(ps.请注意,CrudattractionView
类扩展了CrudView
)
编辑
吸引力
public class Attraction extends Accomodation {
private String openingTime;
public Attraction() {
}
public Attraction(Accomodation accomodation) {
super(accomodation);
}
// getters and setters
}
住宿
public class Accomodation implements Serializable {
protected String id;
protected String name;
protected Integer avarageRating;
protected Integer avaragePrice;
protected String phoneNumber;
protected Address address;
protected Point point;
protected List<Review> reviews;
protected Long totalReviews;
protected Long totalRating;
protected List<String> images;
protected boolean hasCertificateOfExcellence;
protected String addedDate;
protected String lastModificationDate;
public Accomodation() {
}
public Accomodation(Accomodation accomodation) {
}
// getters and setters
}
所有吸引
都是住宿
,但不是所有住宿
都是吸引
。
这意味着您不能安全地执行以下操作:
Attraction attraction = (Attraction) super.getAccomodationByFormData(crudAttractionView);
即使您在attractioncontroller
中(Java不会根据您的控制器名称更改super.getaccomadation的返回类型)。
一种不需要任何框架的解决方案是:
Accomodation accomodation = super.getAccomodationByFormData(crudAttractionView);
Attraction attraction = new Attraction(accomodation);
attraction.setOpeningTime(getOpeningTimeWithFormData())
您只需确保您有一个accomodation
构造函数,它将接受accomodation
并将其字段复制到您的景点。
类似于:
public Attraction(Accomodation accomodation){
attraction.setX(accomodation.getX())
...
}
或者只调用super(accomodation)
并在accomodation
中使用一个构造函数,该构造函数将能够将一个accomodation复制到一个新的accomodation中(这样您就可以在以后的所有扩展类中使用该构造函数)
现在,你确保你的住所是一个有效的吸引力,然后你投下它。
在一个更简洁的示例中,下面是它的外观
import java.io.Serializable;
class Attraction extends Accomodation {
public Attraction() {
}
public Attraction(Accomodation accomodation) {
super(accomodation); // we let super do the simple mapping
}
// getters and setters
public void setOpeningTime(String test){
//
}
protected Accomodation getAccomodationByFormData() {
Accomodation accomodation= new Accomodation();//super.getAccomodationByFormData(crudAttractionView);
Attraction attraction = new Attraction(accomodation); // we convert our accomodation thanks to our constructor
attraction.setOpeningTime("...");
return attraction;
}
}
class Accomodation implements Serializable {
protected String id;
protected String name;
protected Integer avarageRating;
protected Integer avaragePrice;
protected String phoneNumber;
protected Long totalReviews;
protected Long totalRating;
protected boolean hasCertificateOfExcellence;
protected String addedDate;
protected String lastModificationDate;
public Accomodation(Accomodation accomodation) {
this.id = accomodation.id;
this.name = accomodation.name;
this.avarageRating = accomodation.avarageRating;
this.avaragePrice = accomodation.avaragePrice;
this.phoneNumber = accomodation.phoneNumber;
this.totalReviews = accomodation.totalReviews;
this.totalRating = accomodation.totalRating;
this.hasCertificateOfExcellence = accomodation.hasCertificateOfExcellence;
this.addedDate = accomodation.addedDate;
this.lastModificationDate = accomodation.lastModificationDate;
}
public Accomodation() {
}
// getters and setters
}
我的代码有一个错误。 我的适配器类: 我的班级:
问题内容: 连接到MySQL时,出现错误(见下文)。 点击此处获取代码 我得到以下输出: 我该如何解决? 问题答案: 您的错误明确指出无法进行强制转换,因为java.math.BigInteger类实例不是java.lang.Long类的实例。 现在出现了一个问题,即谁在哪个级别上进行强制转换,当我们要求JDBC驱动程序进行连接时,它实际上在幕后进行了大量工作,然后才真正给我们适当的连接工作对象。
请帮我把这个移开。下面是我的代码: 这是我从php文件中得到的json
问题内容: 我知道在stackoverflow中已经对此提出了很多要求,但是我找不到适合我问题的答案。 在下面的以下代码中,我无法打印出每个项目,因为它说。 我曾尝试使用来打印每个项目,但都无法正常工作。 我认为可能是由于Edge类中的方法导致的问题,但是如果我不使用它,我将无法获得真实的键号(它将被打印为或类似的形式) 感谢您之前的帮助 主班 边缘类 图类 节点类 问题答案: private H
问题内容: 我使用maven-eclipse创建了一个新的Spring MVC项目,并引发以下错误: (我尝试了stackoverflow的一些解决方案,但这些解决方案在我的情况下不起作用。pom.xml出现了一些我找不到的问题。我为servlet- api添加了提供的作用域,并尝试了它也不起作用。) 我的pom.xml如下: 我的web.xml如下: 问题答案: 更改 至 具有以下说明: 这很像
问题内容: 您好,我的代码正在抛出。StackTrace显示: 即@ ps.setDate(6,(Date)affiliate.getDate()); 在DAO 以下是我的servlet: 以下是我的DAO: 以下是我的DTO: 请在这方面帮助我 问题答案: 由于文档说,将在参数的需要类型的Date对象。但是您似乎在课堂上使用了对象。 这就是为什么你得到了。 要解决此问题,您需要将类中的对象类型更