Java 实例化实现接口的通用类型

Java instantiating a generic type which implements an interface

我在研究 Java 中的 OOP 概念和内部 classes 时遇到了一个问题。

假设有一个 class CarFactory,它有 buildCar() 方法 return 是 Car。这个工厂构建了几个 Models 实现了 Car.

因此,我做了一个Car接口和Models实现Car

你怎么能return一个Car接口?

我知道我可以实例化一个实现 Car 的 Model,但我想创建一个通用方法 returns 任何实现 CarModel ].

CarFactory.java

public class CarFactory {
  Car buildCar() {
    return new Car();  // ??? I cannot do this 
  }
}

Car.java

public interface Car {
  abstract class Construct {
    abstract void constructCar();
  }
  void turn();
  void stop();
  void accelerate();
  ...
}

ModelExample.java

public class ModelExample implements Car {
  static CarFactory factory;

  public ModelExample() {
    this.factory = new CarFactory();
  }

  class Construct extends Car.Construct {
    void constructCar() {
      System.out.println("Model Example constructed");  
    }
  }
}

在Java中,您不能初始化接口。我建议你研究抽象工厂设计模式。

对于您的情况,您需要一个接口 AbstractCarFactory,其中包含一个方法 Car buildCar。然后,您可以为每种类型的汽车创建 AbstractCarFactory 的子类。