java抽通用方法_java – 使用通用签名覆盖抽象方法并调用它

通用接口:

public interface Matcher {

public double getScore(T value1, T value2);

}

两个实施类:

public StringMatcher implements Matcher {

public double getScore(String value1, String value2) {...}

}

public DateMatcher implements Matcher {

public double getScore(Date value1, Date value2) {...}

}

到目前为止一切都很好.用字符串或日期替换T不是问题.

按如下方式调用getScore()方法也有效:

Matcher matcher = new StringMatcher();

matcher.getScore("hello", "world");

当我有一个未知匹配的List并且我想使用getScore()方法时,问题就开始了.

public void test() {

List> list = new ArrayList>();

list.add(new StringMatcher());

list.add(new DateMatcher());

for (Matcher> matcher : list) {

Object value1;

Object value2;

//Setting values value1 & value2 appropriate to the current matcher

matcher.getScore(value1, value2);

}

}

我无法调用matcher.getScore(value1,value2),因为它无法处理对象参数.

在这一点上,我不知道如何解决这个问题.我想保持实现类的接口和签名及其具体类型.如果无法进行类型转换或抛出异常,那就没关系.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值