返回信息流直接上代码:
父类
```java
public abstract class Fa<K>{
public boolean compareTo(K other) {
return false;
}
}
```
子类
```java
public class Ch1 extends Fa<Ch1>{
@Override
public boolean compareTo(Ch1 c1) {
......
}
}
```
问题:
```java
Fa target = getFaSubClassFromSomeWhere();//这个拿到的可能是Ch1,Ch2等等
for(Fa a: listWithManyTypeOfSubClassFa){ //这个列表里面拿到的类可能有 Ch1,Ch2,Ch3等等,都继承Fa
if(target.getClass==a.getClass){
if(target.compareTo(a)){
//Unchecked Call to "compareTo(K other)" as a member of raw type...
//这个是一个warning,想想也情有可原,如果前面不用getClass判断就危险了
//不过我想,有没有办法通过范型检查或者是换个思路去写代码来避免这个warning呢?
//整页代码都是白的就这一个warning强迫症看着好难受啊QAQ
......
}
}
}
```
### 另外求问有没有从org.json扩展出来(也就是只引用这个包的,android原生只有这个)的稍微封装过的json解析库?功能简单点没关系,只求不要太大qwq。因为要做的是类似sdk的东西,尽量不要往里边放太多第三方库,而且要解析的东西应该比较简单,所以jackson,Gson这些不打算用。
这是一条镜像帖。来源:北邮人论坛 / java / #53486同步于 2016/10/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
[已解决]求助一个关于范型的问题
ytinrete
2016/10/14镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
1. 为何不用instanceof
2. target.compareTo((Ch1)a)应该可以?
3. org.json的API跟屎一样,gson挺好用的。。。
【 在 dss886 的大作中提到: 】
: 1. 为何不用instanceof
: 2. target.compareTo((Ch1)a)应该可以?
: 3. org.json的API跟屎一样,gson挺好用的。。。
哎喵。上面没有讲很清楚(刚改了一下),也就是无论是target还是列表里面的实例只知道是Fa的子类而不知道具体是哪个类。
所以没有办法直接写 if(target instanceof XXX)。所以后面的强转也不行呃qwq
org.json很简陋所以才偷个懒想找人封装过的。
因为这个东西需要做成代码越少越轻量级越好,
android不是有65535限制嘛,最好别超。
实在不行也只能自己写了TAT
泛型解决不了问题
一般是在compareTo里面检查类型吧
而且报警也没什么大不了的,你都检查了
如果强迫症晚期,可以suppresswarning
【 在 ml3615556 的大作中提到: 】
: 泛型解决不了问题
: 一般是在compareTo里面检查类型吧
: 而且报警也没什么大不了的,你都检查了
: ...................
对喔,想了一下这样设计并不正确,没办法保证继承基类的compareTo传的一定是自己的类型,
所以判断class相等也是有缺陷的,现在把基类函数签名改了用object,怎么判断由子类compareTo里自己想办法。
这样才严谨呢。
多谢了哈~