我有一个基类这样的:如何在强制强制转换受保护对象的超类时抛出警告?
class Base {
protected Object a;
Base(Object a) {
this.a = a;
}
}
,然后,一个daugher类:
class Daugher extends Base {
/*
... some attributes ....
*/
Daughter(Pair<L, R> a) {
super(a);
/*
.... some methods ....
*/
public void mathodX() {
....
((Pair <L, R>) a).getLeft().SomeSpecificMethodOfObjectTypeL()
....
}
}
注:对具体为org.apache.commons.lang3.tuple.Pair对象,但我想同样适用于其他结构,如地图,列表等...
因此,如果我想使用强制对象类型的特定方法,我不得不做上述的丑陋铸造。 但是,这个转换会在Eclipse中引发“未经检查的转换”警告,所以它不太好。 如果我尝试插入一个支票(例如“if(一个对的实例)”等)...我被告知我不能使用instanceof检查与特定的任务,但我应该检查与Pair。但是这不会毫无意义,因为那么我想要达到L(或R)特有的方法吗?
从更广泛的意义上讲,在超类中操纵受保护的通用对象的最正确方法是什么?
我很抱歉如果没有以最好的方式说明问题,我不是Java专业人员。
感谢您的帮助!
实际上,你可以不知道肯定'了'是'对'。既然它不是最终的,它可能已经被改变了,你知道,编译器是正确的,可以警告你。 –
resueman
2014-09-26 14:03:08
是的,我理解你的观点,我明白为什么编译器会提出警告 - 我只是想知道检查对象a是否是Pair的一个实例是最正确的方法。 –
CaptainPhlegm
2014-09-26 14:51:25