我有以下代码:
class PageMedia {
public PageMedia upload(){return this;}
public void insert(){}
}
class PageA {
public PageA dosomething(){ return this;}
public void openMedia(){ return page(PageMedia.class);}
public PageA save(){ return this;}
}
class PageB {
public PageB dosomething(){ return this;}
public void openMedia(){ return page(PageMedia.class);}
public PageB save(){ return this;}
}
每个类都是唯一的,每个方法都是唯一的。
需要PageMedia类的方法“插入”返回链中使用的类PageA或PageB。
因此可以执行以下操作:
PageA.open()
.dosomething()
.openMedia()
.upload()
.insert()
.save;
PageB.open()
.dosomething()
.openMedia()
.upload()
.insert()
.save;
答案 0 :(得分:2)
如果我正确理解您的问题。您可以使用以下内容:
interface Page {
//general Methods ... save, openMedia, ...
}
class PageMedia {
Page reference;
public PageMedia(Page reference){
this.refreence = reference;
}
public PageMedia upload(){return this;}
public Page insert(){ return reference;}
}
class PageA implements Page{
public PageA dosomething(){ return this;}
public PageMedia openMedia(){ return new PageMedia(this);}
public Page save(){ return this;}
}
致谢, WiPu
答案 1 :(得分:1)
您需要制作一个同时由PageA和PageB实现的接口,并返回一个实现该接口的类的对象。依靠抽象而不是实现。
您应该得到这样的东西:
interface IPage {IPage doSomething(); }
public IPage insert() {return new PageA()}
class PageA implementes IPage
class PageB implementes IPage