在软件开发中,"从方法返回接口"这一概念指的是一个方法(函数)返回一个接口类型的对象。接口是一种抽象类型,它定义了一组方法签名,但不包含这些方法的具体实现。任何实现了该接口的类都必须提供这些方法的具体实现。
接口(Interface):
方法返回接口:
List
, Map
等。假设我们有一个Drawable
接口和一个返回此接口的方法:
// 定义Drawable接口
public interface Drawable {
void draw();
}
// 实现Drawable接口的具体类
public class Circle implements Drawable {
@Override
public void draw() {
System.out.println("Drawing a circle");
}
}
public class Square implements Drawable {
@Override
public void draw() {
System.out.println("Drawing a square");
}
}
// 包含返回Drawable接口的方法的类
public class ShapeFactory {
public Drawable getShape(String shapeType) {
if ("circle".equalsIgnoreCase(shapeType)) {
return new Circle();
} else if ("square".equalsIgnoreCase(shapeType)) {
return new Square();
}
return null;
}
}
// 使用ShapeFactory
public class Main {
public static void main(String[] args) {
ShapeFactory factory = new ShapeFactory();
Drawable shape1 = factory.getShape("circle");
shape1.draw(); // 输出: Drawing a circle
Drawable shape2 = factory.getShape("square");
shape2.draw(); // 输出: Drawing a square
}
}
问题:调用返回接口的方法时,得到null
值。
原因:可能是方法内部逻辑判断错误,或者在某些条件下没有合适的实现类可以返回。
解决方法:
public Optional<Drawable> getShape(String shapeType) {
if ("circle".equalsIgnoreCase(shapeType)) {
return Optional.of(new Circle());
} else if ("square".equalsIgnoreCase(shapeType)) {
return Optional.of(new Square());
}
return Optional.empty();
}
通过这种方式,调用者可以更安全地处理可能的空值情况。
领取专属 10元无门槛券
手把手带您无忧上云