Java 在参数中传入常规类
我有几个类,我想作为我的一个方法的参数传入。传递后如何获取类变量。例如,如果我想通过患者课程,我想知道患者姓名、电话号码等。如果我想通过医生课程,我想知道医生的执业情况、姓名等。我想知道这些信息,以便将它们输入数据库。我打算为每个类创建几个方法,但我想知道是否有一种方法可以创建一个方法并在普通类中传递 以下是我针对通用方法的新代码/方法:Java 在参数中传入常规类,java,Java,我有几个类,我想作为我的一个方法的参数传入。传递后如何获取类变量。例如,如果我想通过患者课程,我想知道患者姓名、电话号码等。如果我想通过医生课程,我想知道医生的执业情况、姓名等。我想知道这些信息,以便将它们输入数据库。我打算为每个类创建几个方法,但我想知道是否有一种方法可以创建一个方法并在普通类中传递 以下是我针对通用方法的新代码/方法: public boolean addNewUser(Object obj) { boolean success = false;
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;
}
我建议您创建一个接口,然后让
Patient
和Doctor
或具有相同属性的任何其他对象实现它
public interface IUser{
int id();
String firstName();
String lastName();
String email();
String address();
int phoneNumber();
String dob();
}
然后更改addNewUser
方法以接受类型为IUser
的参数
public boolean addNewUser(IUser user){
...
...
...
}
现在,您应该能够通过界面从用户
对象调用所有方法。您可以通过“继承”来完成。由于您的数据库表名为“USERS”,并且查看您的代码时,您似乎没有区分患者用户和医生用户,所有这些都在同一个表中,因此您可以创建一个父类作为user
,并具有所有公共属性,如id
,firstName
,lastName
等,然后让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;
}
另外,您还可以创建一个名为
用户
的界面,然后让您的患者
和医生
类实现此界面,这种方法的优点是您可以“编程到界面”,但您应该拥有父类还是接口取决于您的应用程序设计和其他因素,您最好自行决定,但拥有接口也是一种选择。您可以通过谷歌代码/程序来访问接口,以了解更多信息。也许可以让您的类实现一个带有getAttributes方法的接口,该方法返回您想要的所有属性的数组?由于您希望某些类具有共享功能,这似乎不是一个糟糕的做法,但如果我错了,请随时纠正我。您可以在运行时通过反射API访问类的字段名称类型等:接口或基类正是如此。谢谢@patrick hainge,我将尝试实现这个接口,看看它是如何实现的“编程到一个接口”只是部分地与Java接口相关。对抽象基类的编程也是对接口的编程。