java – 类型的通用方法
发布时间:2020-12-15 05:12:54 所属栏目:Java 来源:网络整理
导读:我有以下界面: public interface Caster{ public boolean tryCast(Object value);} 及其实施: public class IntegerCaster{ public boolean tryCast(Object value){ try{ Integer.class.cast(value); return true; } catch (ClassCastException e){ return
我有以下界面:
public interface Caster{ public boolean tryCast(Object value); } 及其实施: public class IntegerCaster{ public boolean tryCast(Object value){ try{ Integer.class.cast(value); return true; } catch (ClassCastException e){ return false; } } } public class DateCaster{ public boolean tryCast(Object value){ try{ Date.class.cast(value); return true; } catch (ClassCastException e){ return false; } } } 是否可以使这种实现通用?我们不能完全接受并使用类型参数声明Caster,因为我们将无法按如下方式实现它: public interface Caster<T>{ public boolean tryCast(Object value); } public class CasterImpl<T> implements Caster<T>{ public boolean tryCast(Object value){ try{ T.class.cast(value); //fail return true; } catch (ClassCastException e){ return false; } } } 解决方法
您必须在Generic CasterImpl中注入由T参数化的Class值.
像这样的东西: public class CasterImpl<T> implements Caster<T> { private Clazz<T> clazz; public CasterImpl(Class<T> clazz) { this.clazz = clazz; } public boolean tryCast(Object value){ try{ clazz.cast(value); return true; } catch (ClassCastException e){ return false; } } } 作为旁注:我没有看到Caster接口为Generic的原因,因为您没有在接口中使用type-parameter. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |