クラス(SurgeryRoomまたはTechRoom)でrooms
のフィルタリストを返そうとしています。 2つのプライベートメソッドを持つ代わりに、部屋クラスを引数としてgetAvailableRooms()
に渡すことでそれを行う方法はありますか?たび今ではクラスの種類をフィルタ関数に渡す
private List<IRoom> filterRoomByType(Predicate<IRoom> predicate) {
List<IRoom> r = new ArrayList<>();
for (IRoom room : rooms) {
if (predicate.test(room)) {
r.add(room);
}
}
return r;
}
:https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#isInstance(java.lang.Object)
private <T extends IRoom> List<T> filterRoomByType(Class<T> roomType) {
List<T> r = new ArrayList<>();
for (IRoom room : rooms) {
if (roomType.isInstance(room)) {
r.add((T) room);
}
}
return r;
}
万が一、グアバを使用していますか? – shmosel
単純なJava 9.0だけではありません – Christian
あなたのコードを改善したい場合は、https://stackoverflow.com/questions/11575376/why-use-enums-instead-of-constantsを読んでください。 – alfasin