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 任何实现 Car
的 Model
].
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
的子类。
我在研究 Java 中的 OOP 概念和内部 classes 时遇到了一个问题。
假设有一个 class CarFactory
,它有 buildCar()
方法 return 是 Car
。这个工厂构建了几个 Models
实现了 Car
.
因此,我做了一个Car
接口和Models
实现Car
。
你怎么能return一个Car
接口?
我知道我可以实例化一个实现 Car 的 Model
,但我想创建一个通用方法 returns 任何实现 Car
的 Model
].
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
的子类。