永发信息网

一直都是接口泛型,例如List<User>,忽然间实体类泛型User<List>了,假如是这样,什么用法啊

答案:2  悬赏:0  手机版
解决时间 2021-03-15 04:02
  • 提问者网友:遮云壑
  • 2021-03-14 08:00
PageFinder page = commodityCollectDal.getCommodityCollectPage(commodityCollectDoConverter.commodityCollectDo2Po(commodityCollectDo), pageNo, pageSize)
PageFinder:是分页的实体类
ICommodityCollect:接口,定义了一些方法
本人新手,突然间不懂。求大神赐教
最佳答案
  • 五星知识达人网友:冷風如刀
  • 2021-03-14 08:44
这样的设计 一般的写法是:定义一个基接口(basicInterface), 然后基于整个接口 定义一些子接口 这些子接口都继承该基接口,然后定义各个子接口的实现类根据业务不同实现方法。
然后你提到的这个实体类中 会有一些方法来处理数据,当然 一般处理数据的代码是一样的,否则就不这么设计了。传入泛型接口的实现类,强制转换成Basic接口,然后调用某个方法。这样就是一个commonly used的类了。只要是继承自 BasicInterface 的接口 都可以用这个类。
package eg;

//基接口
public interface BasicInterface {

void doSth();

}package eg;

//子接口
public interface SubInterface extends BasicInterface {

//可以加一些自己另外的接口  有点adaptor的意思, 但是新加的接口 就不能用公共类调用了,不在约定范畴内。
void doSthMySelf();

}package eg;

public class Tst {

public void process(I i){
BasicInterface b = (BasicInterface) i;
b.doSth();
}

public static void main(String[] args) {
Tst t = new Tst<>();
//业务1
t.process(new SubInterface(){
@Override
public void doSth() {
System.out.println("具体实现1");

}
@Override
public void doSthMySelf() {
System.out.println("自己的接口,这里调不到");
}
});
//业务2
t.process(new SubInterface(){
@Override
public void doSth() {
System.out.println("具体实现2");

}

@Override
public void doSthMySelf() {
System.out.println("自己的接口,这里调不到");
}
});
}

}其实也可以 只做一个子接口,或者不要子接口。 直接只对BasicInterface 实现。  其他接口自己写去, 跟这个接口不要关联。  根据实际业务需求吧,怎么设计都OK
全部回答
  • 1楼网友:封刀令
  • 2021-03-14 10:10
泛型是为了解决抽象的问题。例如,方法a(int,int,string);b(string,char,char);c(int,float,char);的签名各不相同,但是要做相同的操作。可以看到他们有一个共同点——三个参数。那么我可以定义一个泛型方法string functionwiththreearg(t1 arg1,t2 arg2,t3 arg3) where ... //这里做泛型约束,比如都实现了 ‘+’ 运算符 { string result = arg1 + arg2 + arg3; return result; } 那么现在来调用a,b,c三种情形,就可以使用泛型方法了 a:functionwiththreearg(1,2,"3"); b:functionwiththreearg("1",'b','c'); c:functionwiththreearg(1,"1.5",'a'); 嗯,这里只是简单说明下问题,并不是实际代码。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯