私のメソッドの1つのパラメータとして渡すクラスはほとんどありません。クラス変数を渡すとどうすれば得られますか?たとえば、患者クラスを渡したい場合は、患者の名前や電話番号などを知りたいと思います。医者クラスに渡したい場合は、医師の練習や名前などを知りたいそれらの情報をデータベースに入れることができます。私はクラスごとにいくつかのメソッドを作成しようとしていましたが、1つのメソッドを作成して一般クラスに渡す方法があるのだろうかと疑問に思っていました。パラメータの一般クラスを渡す
ここでは一般的な方法のための私の新しいコード/アプローチです:
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;
}
ここでは私の昔のアプローチは、私がPatient
とDoctor
または任意の他の聞かせて、その後、あなたがインターフェイスを作成することをお勧めしたい
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;
}
あなたのクラスは、必要なすべての属性の配列を返すgetAttributesメソッドを使ってインターフェイスを実装していることがありますか?いくつかのクラスが機能を共有したいので、これは悪い習慣のようには見えませんが、間違っていれば私を修正してください。 –
リフレクションAPIを使用して、ランタイムにクラスのフィールド名の型などにアクセスできます。https://docs.oracle.com/javase/tutorial/reflect/ – brunesto
これは、インタフェースまたは基本クラスの場合とまったく同じです。 – chrylis