gpt4 book ai didi

java - java中如何从不同类的对象中获取共同属性

转载 作者:行者123 更新时间:2023-11-30 03:59:50 25 4
gpt4 key购买 nike

我有一个对象说汽车,它有不同的方法来获取不同汽车制造商的汽车,例如Audi、BMW、Merc 等。所有这些汽车类都没有任何公共(public)接口(interface)或抽象类,但具有一些公共(public)属性,如车轮、制动器等。汽车对象有一个方法来识别应使用哪种类型的制造商对象来提取特性。谁能建议我一种从汽车对象中提取轮子的好方法?

public class Car {
public Audi getAudi() { return this.audi; }
public BMW getBMW() { return this.bmw; }
public Merc getMerc() { return this.merc; )

public String getMaker() { return this.maker; }
}

public class Audi {
public Wheel getWheel() { return this.wheel; }
public Brakes getBrakes() { return this.brakes; }
}

public class BMW {
public Wheel getWheel() { return this.wheel; }
public Brakes getBrakes() { return this.brakes; }
}

public class Merc{
public Wheel getWheel() { return this.wheel; }
public Brakes getBrakes() { return this.brakes; }
}

最佳答案

首先,如果所有类都有相同的(逻辑)方法,那么它确实有一个接口(interface),只是不是一个正式的接口(interface),所以你的第一个任务是实现一个所有类都必须实现的正式接口(interface)。

或者,您可以使用反射来获取所有方法并解析它们的名称,但这种方法很麻烦,而且容易出错(如果您的方法签名太复杂,那就太可怕了)。

或者,您可以将 Car 类抽象化,并为 GetWheel()GetBrakes() 等提供抽象方法。

此外,您似乎应该使用工厂模式来保存 getAudi()getBMW()getMerc() 方法。它可以保存汽车实例的 map (如果您使用单个实例)或返回新实例(可以是匿名内部类而不是具体类),具体取决于您想要实现的目标。

关于java - java中如何从不同类的对象中获取共同属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22224163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com