protected <T> T getBookByClass(Class<T> clazz, T deffault) {
T result = null;
if (deffault instanceof BookA) {
BookA book = (BookA)deffault;
result = (clazz.cast(book));
} else if (deffault instanceof BookB) {
BookB book = (BookB)deffault;
result = (clazz.cast(book));
} else if (deffault instanceof BookC) {
BookC book = (BookC)deffault;
result = (clazz.cast(book));
}
if (null != result) {
return result;
}
return deffault;
}