Java使用instanceof但基于方法参数

Java使用instanceof但基于方法参数,java,object,instanceof,Java,Object,Instanceof,我有三个物体 Car SmallCar extends Car LargeCar extends Car 使用此方法,我想在列表中计算特定类型的车辆: public int availableCars(String carType) { int count = 0; for (Car i : fleet) { if (i instanceof SmallCar) { count++; } } return

我有三个物体

Car
SmallCar extends Car
LargeCar extends Car
使用此方法,我想在列表中计算特定类型的车辆:

public int availableCars(String carType) {
    int count = 0;
    for (Car i : fleet) {
        if (i instanceof SmallCar) {
            count++;
        }
    }
    return count;
}
传递给定的carType(如果是字符串或其他更好的方式)的最佳方式是:

if (i instanceof carTypeGiven)

该方法返回特定类型的可用汽车数量。

传入类,而不是指示所需类型的字符串。您可以使用如下通配符将其限制为
Car
的子类:
Class传入类,而不是指示所需类型的字符串。您可以使用如下通配符将其限制为
Car
的子类:
Class传入类,而不是指示所需类型的字符串。您可以使用如下通配符将其限制为
Car
的子类:
Class传入类,而不是指示所需类型的字符串。您可以使用如下通配符将其限制为
Car
的子类:
classe然后您需要两个int-count变量,smallCarCount和largeCarCount。总计数当然是它们的总和。然后需要两个int-count变量,smallCarCount和largeCarCount。总计数当然是它们的总和。然后需要两个int-count变量,smallCarCount和largeCarCount。总计数当然是它们的总和。然后需要两个int-count变量,smallCarCount和largeCarCount。当然,总计数将是它们的总和。+1用于包含Java8流以进行此类过滤+1用于包含Java 8流以执行此类过滤+1用于包含Java 8流以执行此类过滤+1用于包含Java 8流以执行此类过滤!
public int availableCars(Class<? extends Car> carType) {
    int count = 0;
    for (Car car : fleet) {
        if (carType.isInstance(car)) {
            count++;
        }
    }
    return count;
}
public long availableCars(Class<? extends Car> carType) {
    return fleet.stream().filter(carType::isInstance).count();
}
public long availableCars(Class<? extends Car> carType) {
    return Arrays.stream(fleet).filter(carType::isInstance).count();
}