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();
}