Giriş
Örnek
Şöyle yaparız.
Eğer nesne içinde planes diye bir liste varsa ve bu listeyi belirtilen sınıf tipine göre filtrelemek istersek şöyle yaparız
if (Foo.class.isInstance(object)) {
Foo foo = Foo.class.cast(object)
...
}
şeklinde kullanılır. Belirtilen nesnenin bu sınıf tipinden olup olmadığını döner.Örnek
Şöyle yaparız.
Class<?> c = ...;
Object obj = ...;
if (c.isInstance(obj)) {...}
Örnek
Logical OR kullanmamak için şöyle yaparız. Burada stream.anyMatch() kullanılıyor
List<Class<? extends SqlDialect>> supportedDialects = Arrays.asList(
MysqlSqlDialect.class,
PostgresqlSqlDialect.class,
H2SqlDialect.class);
// Returns if upsert is supported for the given dialect
boolean isUpsertDialectSupported(JdbcTable jdbcTable) {
SqlDialect dialect = jdbcTable.sqlDialect();
return supportedDialects.stream().anyMatch(clazz -> clazz.isInstance(dialect));
}
Örnek
public <T extends Plane> List<T> getPlanes(Class<T> claz) {
List<T> result = new ArrayList<>();
for (Plane plane : planes) {
if (claz.isInstance(plane)) {
result.add(claz.cast(plane));
}
}
return result;
}
Aynı şeyi for döngüsü yerine şöyle de yapabiliriz.public <T> List<T> getTPlanes(Class<T> clazz) {
List<T> tPlanes = new ArrayList<>();
planes.stream()
.filter(clazz::isInstance)
.forEach((p) -> tPlanes.add((T) p));
return tPlanes;
}
Hiç yorum yok:
Yorum Gönder