0

我有一个大约五级深度的 Java bean 继承层次结构,其中有许多类型的车辆模型作为最深层次的子类。每辆车大约有20个田地。我让工厂根据价值返回特定的车型。然后我必须使用设置器来设置二十个字段中的每一个。但是属性,因此,setter 取决于每个模型。这些模型不实现任何接口。即使他们这样做了,我也无法在接收空具体类型的接口类型上调用 setter。有没有办法将引用接收到具体模型类型中,以便我可以调用 setter?其余的类需要使用这样的引用来调用其他方法。

我想收到以下内容之一:

Camry camry = Factory.get("DL");
Taurus taurus = Factory.get("BC");
Cadillac cadillac = Factory.get("ES");

然后根据需要使用其中一个参考。cadillac.setStarSystem("star123"); ..所有凯迪拉克相关的二传手

不必使用工厂。任何其他技术都可以。

谢谢!

4

1 回答 1

0

如果你知道你要回来的类型,这不只是一个简单的铸造练习吗?(“任何其他技术都可以”?)

Camry camry = (Camry)vehicles.get("DL");
Taurus taurus = (Taurus)vehicles.get("BC");
Cadillac cadillac = (Cadillac)vehicles.get("ES");

cadillac.setStarSystem("star123");

不,您不需要使用任何特定的接口来执行此操作。如所示/提到的,这将允许您“将引用接收到具体的模型类型中,以便我可以调用 setter”。

(Java 1.5/5.0 引入的泛型的一个不幸的副作用是它有时会导致用户忘记多态性的基础知识——突然之间,“强制转换很糟糕”。)

于 2012-09-15T00:39:22.593 回答