java - 在参数中传入一个通用类

标签 java

我想将几个类作为我的方法之一的参数传递。通过后我将如何获取类变量。例如,如果我想通过一个病人的类(class),我想知道病人的姓名、电话号码等。如果我想通过一个医生的类(class),我想知道医生的执业情况、姓名等。我想这些信息,以便我可以将它们放入数据库中。我打算为每个类创建多个方法,但想知道是否有一种方法可以创建一个方法并传入通用类。

这是我的通用方法的新代码/方法:

public boolean addNewUser(Object obj)
    {
        boolean success = false;

        int executedValue = 0; 

        try
        {
            Connection conn = DBConnection.getConnection();

            String query = "INSERT INTO Users (id, firstName, lastName, email, address, phonenumber, dob) VALUES (?,?,?,?,?,?,?)";
            PreparedStatement stmt = conn.prepareStatement(query);
            stmt.setString(1, obj.getId); // not possible
        }
        catch(Exception e)
        {
            System.out.println(e);
        }

        return success;
    }

这是我的旧方法

public boolean addNewPatient(Patient patient)
    {
        boolean success = false;

        int executedValue = 0;  

        try
        {
            Connection conn = DBConnection.getConnection();

            String query = "INSERT INTO Users (id, firstName, lastName, email, address, phonenumber, dob) VALUES (?,?,?,?,?,?,?)";
            PreparedStatement stmt = conn.prepareStatement(query);
            stmt.setInt(1,patient.getId());
            stmt.setString(2, patient.getFirstName());
            etc...
        }
        catch(Exception e)
        {
            System.out.println(e);
        }

        return success;

    }

最佳答案

您可以通过“继承”来做到这一点。由于您的数据库表名称为“USERS”,并且查看您的代码,看起来您没有区分患者用户和医生用户,所有内容都位于同一个表中,因此您可以创建一个父类作为 User 并具有所有常见属性,例如 idfirstNamelastName 等,然后具有 Patients 和Doctor 类“扩展”这个父类(每个子类都有更多特定于它们的字段/方法)。最后,您的 DAO 方法将是 addUser(User user)。例如,下面的示例类接受 User 对象。

public boolean addNewUser(User user) {
    boolean success = false;

    int executedValue = 0;

    try {
        Connection conn = DBConnection.getConnection();

        String query = "INSERT INTO Users (id, firstName, lastName, email, address, phonenumber, dob) VALUES (?,?,?,?,?,?,?)";
        PreparedStatement stmt = conn.prepareStatement(query);
        stmt.setInt(1, user.getId());
        stmt.setString(2, user.getFirstName());
    } catch (Exception e) {
        System.out.println(e);
    }

    return success;
}
<小时/>

顺便说一句,您还可以创建一个名为 User 的接口(interface),然后让您的 PatientsDoctor 类实现该接口(interface),优点这种方法的特点是你正在“接口(interface)编程”,但是你是否应该有父类或接口(interface)取决于你的应用程序设计和其他因素,你最好决定它,但有一个接口(interface)是也是一种选择。您可以通过谷歌搜索代码/程序来了解更多信息。

关于java - 在参数中传入一个通用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43765266/

相关文章:

java - 无法登录 Kylo

java - 调整动画 GIF 的大小,同时使用 java 保持它的动画

java - Android:在加载内容时运行动画

java - 分享我的 Swing 应用程序中的一个公共(public)变量

java - 使用 Java API 的 weka 分类问题

Java多维数组到C#

Java 集合(LIFO 结构)

Java, Spring : Create a separate datasource bean throws NonUnique error

Java LocalConnection 客户端

java - Spring 启动: FeignClient with SSL (p12)