RShome:
私はいくつかのコーディングの課題をやって、Javaを習得しようとしています。私は、並べ替えの理論を読み取ることによって、概念を理解するが、それらはいくつかの理由で、コーディングの問題にAPPYすることはできません。
私はインターフェイスを書かれており、今、このインタフェース(AlertDAOを)受け入れるAlertServiceクラスのコンストラクタを記述する必要があります。私は本当にコンセプトを理解していません。
誰も説明できますか?
私はインターフェイスを追加し、コンストラクタを追加ではなく、必ずコンストラクタは新しいインターフェイスを受け入れることを作るためにどのようにしましたか?希望は私が意味を作っています。
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
class AlertService {
private final MapAlertDAO storage = new MapAlertDAO();
public UUID raiseAlert() {
return this.storage.addAlert(new Date());
}
public Date getAlertTime(UUID id) {
return this.storage.getAlert(id);
}
}
interface AlertDAO {
public UUID addAlert(Date time);
public Date getAlert(UUID id);
}
class MapAlertDAO implements AlertDAO {
private final Map<UUID, Date> alerts = new HashMap<UUID, Date>();
public UUID addAlert(Date time) {
UUID id = UUID.randomUUID();
this.alerts.put(id, time);
return id;
}
public Date getAlert(UUID id) {
return this.alerts.get(id);
}
}
KeeyPee:
AlertServiceのコンストラクタは次のとおりです。
public AlertService() {
}
コンストラクタは、このように、クラスのオブジェクトを作成するためのものです:
AlertService alertService = new AlertService();
あなたはコンストラクタにAlertDAOを追加したい場合は、次のようになります。
public AlertService(AlertDAO alert){
// do something with alert
}
Javaでコンストラクタは、オブジェクトを初期化するために使用される特殊な方法です。クラスのオブジェクトが作成されたときに、コンストラクタが呼び出されます。オブジェクトが参照属性の初期値を設定するために使用することができます。https://www.w3schools.com/java/java_constructors.asp
編集:あなたの代わりにMapAlertDAOのインタフェースを使用してAlertServiceクラスを持つようにしたい場合は、このようにそれを使用します。
class AlertService {
private AlertDAO storage;
public AlertService(AlertDAO alert) {
this.storage = alert;
}
public UUID raiseAlert() {
return this.storage.addAlert(new Date());
}
public Date getAlertTime(UUID id) {
return this.storage.getAlert(id);
}
}
今、あなたはAlertServiceにごMapAlertDAOを渡すことができます。