如何在 JAVA 中为所有相似类型的 bean 编写通用代码

Posted

技术标签:

【中文标题】如何在 JAVA 中为所有相似类型的 bean 编写通用代码【英文标题】:How to write common code for all similar type of beans in JAVA 【发布时间】:2021-10-13 17:12:39 【问题描述】:

我的 Vehicle 类中有多种类型的汽车,所有汽车都有各自的属性和 getter/setter。我有填充的 Vehicle 类对象,其中包含所请求的特定类型汽车的值。我希望获得这些值并以通用方式将它们存储在单独的 bean 中。请查看以下代码库了解更多详情。

public class Cars 

    private BMW bmw;
    private Hyundai hyundai;
    private TATAMotors tataMotors;
    private Ferrari ferrari;

    // getters and setters


public class BMW  

    private String carid;
    private long price;
    private String carName;
    private double tax;

    //getters and setters

我有同类型的其他豆子,比如法拉利、现代等。

我希望为所有类型的汽车编写一个通用代码,而不是通过 cars.getBMW().getCarId() cars.getFerrari().getCarId() 将这些值存储到另一个 bean。

我在运行时的单个请求中只命中了一种类型的汽车。请求可以包含任何单一类型的汽车,并且不依赖于汽车类型或汽车名称,我只想执行一个通用代码。

请指教。

【问题讨论】:

【参考方案1】:

首先,当涉及到面向对象的编程时,您正在做的事情走向错误的方向。

您正在使用类Cars 作为数据容器。 Java 有很多数据容器可以用于此目的,例如arrayArrayList<> 等。

你可以做的是使用继承

根据您的用例创建一个类 CarVehicle...

public class Car

    // Put all common attributes and functions of a car here!
    private String carId;
    private long price;
    private String carName;
    private double tax;

    public void horn()
    
        System.out.println("BEEEEP");
    

Car 类继承。

public class BMW extends Car

    // Put specific attributes of BMW here, or if there aren't any, just leave it empty

然后在每个子类上使用汽车的通用属性。

BMW bmw = new BMW();
bmw.horn();

【讨论】:

以上是关于如何在 JAVA 中为所有相似类型的 bean 编写通用代码的主要内容,如果未能解决你的问题,请参考以下文章

java - 如何在java中为mysql的JSON数据类型使用准备好的语句?

如何在 Java8 中为 void(非 Void)方法指定函数类型?

如何在 JSTL 中为数组指定 useBean 标签

如何在 Thrift 服务中使用特定于 java 的类型?

如何将外观相似的列合并为一个并在熊猫中为其分配名称?

Ibatis对日期的处理