将布尔方法执行传递给另一个类-java
我有一个布尔方法将布尔方法执行传递给另一个类-java,java,class,methods,boolean,Java,Class,Methods,Boolean,我有一个布尔方法 public boolean addCar(CarReg carReg, Car car){ return ?; } 上面的这个方法是要传递给另一个发生实际检查的类 public class Car{ Map<CarReg, Car> carMap = new HashMap<carReg, Car>(); //if the check is successfull, the details are added to the
public boolean addCar(CarReg carReg, Car car){
return ?;
}
上面的这个方法是要传递给另一个发生实际检查的类
public class Car{
Map<CarReg, Car> carMap = new HashMap<carReg, Car>();
//if the check is successfull, the details are added to the collection
public boolean addCar(CarReg carReg, Car car){
If (garage.getOwner().toString == "pete"){
carMap.put(carReg, car);
return true;
}
}
}
公共级汽车{
Map carMap=newhashmap();
//如果检查成功,则详细信息将添加到集合中
公共汽车(CarReg CarReg,Car Car Car){
If(garage.getOwner().toString==“pete”){
carMap.put(carReg,car);
返回true;
}
}
}
我可以用car.addCar来称呼它吗;
实际上,我已经试过了,但似乎不起作用。除非错误在其他地方 与函数式语言不同,在面向对象语言(如Java)中,您不会传递函数,而是传递可以调用方法的对象。有几种方法可以使布尔方法对Car类可见。我将调用方法
canAddCar
,以避免与Car\addCar
混淆
最简单的方法是,如果可以在Car类本身中定义方法:
public class Car {
public boolean canAddCar(CarReg carReg, Car car) {
// logic for checking if you can add the car
}
public boolean addCar(CarReg carReg, Car car) {
if (canAddCar(carReg, car)) {
// logic for adding the car goes here
return true;
} else {
// anything special if you can't add the car?
return false;
}
}
}
下一个最简单的方法是,如果可以在传递的对象类中定义方法,如CarReg
这是有道理的,如果卡拉格负责检查您是否可以添加一辆车。基于命名,我想你可能希望carReg也负责添加汽车,但我在这里没有说明:
public class CarReg {
public boolean canAddCar(Car car) {
// logic for testing if you can add the car, for example:
return (car.getOwner().toString().equals("pete"));
}
}
public class Car {
public boolean addCar(CarReg carReg, Car car) {
if (carReg.canAddCar(car)) {
// ...
} else {
// ...
}
}
}
接下来,您可以将另一个对象传递给负责检查的类。
这可以是方法addCar
的另一个对象,也可以是Car
类的属性。我在这个例子中展示了后者(因为前面的例子基本上就是前者):
还有其他几种方法(匿名类、单例类、静态方法),但这些都是最常见的方法,应该让您开始学习。您能更清楚地了解一切应该在哪里吗?我想答案应该是使用
这个,但这并不清楚。你可以传递一个对象,你可以传递一个方法调用的结果,但你不能传递一个方法。请在更高层次上解释您想要实现的目标。您应该使用equals
方法,而不是=
来比较字符串。
// might as well use an interface if you'll have multiple methods of checking
public interface CarChecker {
boolean canAddCar(CarReg carReg, Car car);
}
// specific implementation of the CarChecker interface
// you can instantiate this and pass it into the Car class via a setter
public class MyCarChecker implements CarChecker {
public boolean canAddCar(CarReg carReg, Car car) {
// checking logic goes here
}
}
public class Car {
private CarChecker carChecker;
// you'll have to implent getCarChecker and setCarChecker
// (or let your IDE generate the getters and setters)
// assuming you'll call setCarChecker somewhere (or have it wired up via IoC)
public boolean addCar(CarReg carReg, Car car) {
if (carChecker.canAddCar(carReg, car)) {
// ...
} else {
// ...
}
}
}