我有一个叫做Test类的类和一个叫做SubTest扩展的类Text,我想在类中有一个方法,它Test会SubTest在调用时返回实例,我想这样做:
SubTest test = new SubTest().setTest("Hello!").setOtherTest("Hi!");
Run Code Online (Sandbox Code Playgroud)
该setTest()和setOtherTest()方法应该是在Test类.
但当我这样做时:
public Test setTest(String test) { return this; }
Run Code Online (Sandbox Code Playgroud)
它只返回Test我必须强制Test转换的实例SubTest,但我不想这样做.
可能吗 ?如果有,怎么样?
谢谢,MinusKube.
让方法返回其owner(this)以便能够"链接"多个方法调用称为fluent API.您可以使用泛型来解决您的问题,尽管结果代码可能在某种程度上不太可读:
public class Person<T extends Person<T>> {
public T setName(String name) {
// do anything
return (T)this;
}
}
public class Student extends Person<Student> {
public Student setStudentId(String id) {
// do anything
return this;
}
}
public class Teacher extends Person<Teacher> {
public Teacher setParkingLotId(int id) {
// do anything
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,你不需要任何演员表:
Student s = new Student().setName("Jessy").setStudentId("1234");
Teacher t = new Teacher().setName("Walter").setParkingLotId(17);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1741 次 |
| 最近记录: |