Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从父ArrayList返回对象时遇到问题_Java_Arraylist_Null - Fatal编程技术网

Java 从父ArrayList返回对象时遇到问题

Java 从父ArrayList返回对象时遇到问题,java,arraylist,null,Java,Arraylist,Null,我有4节课(为了方便,我会缩短它们) 其中包括addVehicle方法、findVehicle等 车辆类别: public class Vehicle extends Owner{ PoliceStation ps = new PoliceStation("center"); String plateNumber; String name; String type; //String serialNum; public Vehicle(Stri

我有4节课(为了方便,我会缩短它们)

其中包括addVehicle方法、findVehicle等

车辆类别:

public class Vehicle extends Owner{
    PoliceStation ps = new PoliceStation("center");

    String plateNumber;
    String name;
    String type;
    //String serialNum;

    public Vehicle(String driverName, String dateOfBirth,long ownerID, String address,String plateNumber, String name, String type) {
        super(driverName,dateOfBirth,ownerID,address);
        this.plateNumber = plateNumber;
        this.name = name;
        this.type = type;
    }
使用findVehicle方法返回带有车辆车牌号的车辆对象:

public Vehicle findVehicle1(String plateNum) {
    if(this.plateNumber==plateNum) {
        System.out.println("Lookin "+plateNum);
        return super.findVehicleObject(plateNum);
    }else return null;
}
在那之后,我有了第四门课,叫做
RadioCam
,它从车上读取
plateNumber
(注意:下面的代码写得很糟糕,因为我一直试图让它工作,但没有成功)

class无线电摄像机{
公共空隙检测(双速){
System.out.println(“检测到车辆”);
//速度将是一个变量,无线摄像机将使用无线电波和多普勒效应返回
如果(速度>50){
字符串plateNumber=takePicture();
Vehicle veh=新车(车牌号);

veh=veh.findVehicle1(plateNumber);//尝试使用equals方法比较值,
此.plateNumber==plateNum
可能为false,即使它们具有相同的值

public Vehicle findVehicle1(String plateNum) {
    if(this.plateNumber.equals(plateNum)) {
        System.out.println("Lookin "+plateNum);
        return super.findVehicleObject(plateNum);
    }else return null;
}

findVehicle1(String plateNum)
方法中,您正在使用
=
运算符比较两个字符串

试着改变

 if(this.plateNumber==plateNum) {

此外,在构建车辆对象时,还需要输入大量所需的参数

public Vehicle(String driverName, String dateOfBirth,long ownerID, String address,String plateNumber, String name, String type) {
^构造函数要求提供7个参数,而您只提供

new Vehicle(plateNumber);
一个参数。因此,您的
veh.getName()
方法当然将返回null,因为这是您在创建车辆对象时没有维护的属性

在解决这些问题之后,您可以考虑您的通用代码结构,比如在哪里实现循环等等


我不知道您是否使用IDE,但若您使用IDE,请熟悉调试功能,在调用的方法中循序渐进地执行代码。您可以很容易地确定代码行的行为方式是不应该的(毕竟您已经找到了null是方法调用结果的行).

那么?你只需要在
警察局中找到一个方法
findVehicle
,它迭代所有车主,询问每个车主是否拥有一辆给定号码的汽车。@luk2302我完全忘记了。我刚试过,它仍然给了我那个车主。size()是0,除非我声明它是静态的,否则它会工作。我知道它有点混乱。我只是测试了一些东西,忘记在发布到这里之前清理它。问题是它告诉我所有者arraylist是空的,所以它给了我null。luk2302给了我答案。我不得不将findVehicle方法放在PoliceStation类中
 if(this.plateNumber==plateNum) {
 if(this.plateNumber.equals(plateNum)) {
public Vehicle(String driverName, String dateOfBirth,long ownerID, String address,String plateNumber, String name, String type) {
new Vehicle(plateNumber);