Java 实例和铸造,多态性

Java 实例和铸造,多态性,java,casting,instanceof,Java,Casting,Instanceof,基于我的一个老问题,我正在学习更多关于铸造和实例化的知识。这是基于第一本书中描述的场景 所以基本上我现在有了一个新的类(Hybrid),它继承了我的Vehicle类,我要做的是投射一个Hybrid对象来显示作为Hybrid的额外信息。它符合要求,但并没有真正告诉我是什么导致了错误,除了它只是在我标记的行上结束 public class ShowroomDriver { public static void main(String[] args) { Showroom cars =

基于我的一个老问题,我正在学习更多关于铸造和实例化的知识。这是基于第一本书中描述的场景

所以基本上我现在有了一个新的类(Hybrid),它继承了我的Vehicle类,我要做的是投射一个Hybrid对象来显示作为Hybrid的额外信息。它符合要求,但并没有真正告诉我是什么导致了错误,除了它只是在我标记的行上结束

public class ShowroomDriver {
    public static void main(String[] args) {
    Showroom cars = new Showroom("Cars");
    Hybrid hybrid1 = new Hybrid("Toyota Prius", "Focus", "John Smith", "TOTAP453453987346283",
            getCalendar(2,3,1998), getCalendar(24,2,2012),
            "Right Hand",//Hybrid Only Info Edit: Forgot to commentout 
            true,
            'C',
            650, 82.0); //Cost & (Hybrid MPG)

    cars.addVechicle(hybrid1);
    cars.getVechicles();
混合班

import java.util.Calendar;

public class Hybrid extends Vehicle{
    private double consumption;
    private String drive;

    public Hybrid(String Manufacture, String Model, String CustomerName, String Vin, 
            Calendar DateManufactured, Calendar Datesold, String Drive,
            boolean HasbeenSold,
            char TaxBand,
            double Cost, double Consumption){

        super(Manufacture, Model, CustomerName, Vin, DateManufactured, Datesold,
                HasbeenSold,
                TaxBand,
                Cost);
        this.consumption = Consumption;
        this.drive = Drive;
    }

    public Double getConsumption() { return this.consumption; }
    public String getDrive() { return this.drive; }
}
新车辆法

public void displayDetails(){
    for(int i = 0; i <cars.theVehicles.size(); i++){
        if(this.cars.theVehicles.get(i) instanceof Hybrid){//Error here
            Hybrid thehybrids = (Hybrid)this.cars.theVehicles.get(i);
            System.out.println("Consumption: " + thehybrids.getConsumption()+ "\n" +
                    "Drive: " + thehybrids.getDrive());
        }
    }
}
public void displayDetails(){

对于(int i=0;i是否需要强制转换?您已经重写了displayDetails()方法以显示混合特定信息。因此,您应该能够调用此方法,运行时将确定要调用的正确方法。

是否需要强制转换?您已经重写了displayDetails()方法方法来显示特定于混合的信息。因此,您应该能够调用此方法,运行时将确定要调用的正确方法。

您会遇到什么错误?请遵守Java命名约定,并确保变量和字段名以小写字母开头。我刚刚尝试了一次捕获,它实际上似乎是一个空点Rexeptioni无法理解您在这一角色背后的意图:-
(仅混合信息)true
???这表示.cars.theVehicles返回null,请检查您是否正确设置了它?您会遇到什么错误?请遵守Java命名约定,并确保变量和字段名以小写字母开头。我只是尝试了一下,它似乎实际上是一个NullPointerException我不理解您的意图在这个铸造背后:-
(仅混合动力车信息)true
??它的意思是这样的。cars.theVehicles返回null,检查您是否正确设置?您的权利我刚刚返回并删除了不必要的内容。谢谢您您的权利我刚刚返回并删除了不必要的内容。谢谢