传入参数中的通用类

时间:2017-05-03 16:16:52

标签: java

我有几个类,我想作为我的一个方法的参数传入。如何在传递后获取类变量。例如,如果我想通过病人课程,我想知道病人姓名,电话号码等。如果我想通过医生课程,我想知道医生的诊所,姓名,我希望这些信息能够将它们放入数据库中。我打算为每个类制作几个方法,但是想知道有没有办法制作一个方法并传入一般类。

这是我的一般方法的新代码/方法:

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;

    }

2 个答案:

答案 0 :(得分:1)

您可以通过“继承”来完成此操作。由于您的数据库表名称为“USERS”并且查看您的代码,看起来您没有区分患者用户和医生用户,所有内容都在同一个表中,因此您可以创建父类User并且具有所有常见属性,例如idfirstNamelastName等,然后PatientsDoctor类“扩展”此父类(每个具有更多特定于它们的字段/方法的子类)。最后你的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的界面,然后让你的PatientsDoctor类实现这个界面,这种方法的优势就是你“编程到接口“,但是你是否应该有父类或接口取决于你的应用程序设计和其他因素,你最好决定它,但是有一个接口也是一个选项。你可以谷歌代码/程序界面,以了解更多信息。

答案 1 :(得分:0)

我建议您创建一个界面,然后让PatientDoctor或具有相同属性的任何其他对象实现它。

public interface IUser{
    int id();
    String firstName();
    String lastName();
    String email();
    String address();
    int phoneNumber();
    String dob();
}

然后更改addNewUser方法以接受IUser类型的参数。

public boolean addNewUser(IUser user){
    ...
    ...
    ...
}

现在,您应该能够通过界面调用user对象中的所有方法。