вы также можете использовать диапазоны, используя:
b = df[(df['a'] > 1) & (df['a'] < 5)]
Поскольку типичные типы подвергаются стиранию, вам нужно будет указать java.lang.Class где-нибудь в коде. Один из способов - передать его универсальному методу:
ObjType obj = /*...*/;
handleObj(obj, SubObjType.class);
// ...
private <T extends ObjType> void handleObj(ObjType obj,
ObjectHandle<T> handle,
Class<T> handleableObjClass) {
if (handleableObjClass.isInstance(obj)) {
handle.setObj(handleableObjClass.cast(obj));
}
}
Если вы не знаете, какие подклассы ObjType вы ищете, вам нужно будет добавить повторно свойство Class для ObjectHandle, аналогичное как java.util.EnumSet и java.util.EnumMap делают это:
class ObjectHandle<T extends ObjType> {
T obj;
private final Class<T> objectClass;
ObjectHandle(Class<T> cls) {
objectClass = Objects.requireNonNull(cls);
}
Class<T> getObjectClass() {
return objectClass;
}
void setObj(T o) {
obj = o;
}
}
// ...
ObjectHandle<SubObjType> handle = new ObjectHandle<SubObjType>();
// ...
ObjectType obj = /*...*/;
if (handle.getObjectClass().isInstance(obj)) {
handle.setObj(handle.getObjectClass().cast(obj));
}