私は次のインターフェースを持っています:
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;
}
}
}
そのような実装を一般的にすることは可能ですか?次のように実装できないため、typeパラメーターを使用して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内に、によってパラメータ化された値を挿入する必要があります。Class
T
CasterImpl
このようなもの:
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
インターフェース内でtype-parameterを使用しないため、インターフェースがGenericである理由はわかりません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加