我有一个名为 Test
的类和一个名为 SubTest
的类,它们扩展了 Text
,我想在 中有一个方法>Test
类将在调用时返回 SubTest
的实例,我想这样做:
SubTest test = new SubTest().setTest("Hello!").setOtherTest("Hi!");
setTest()
和 setOtherTest()
方法应该在 Test
类中。
但是当我这样做的时候:
public Test setTest(String test) { return this; }
它只返回 Test
的实例,所以我必须将 Test
转换为 SubTest
,但我不想这样做。
这可能吗?如果是,如何?
谢谢,MinusKube。
最佳答案
让方法返回其所有者 (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;
}
}
现在,您不需要任何转换:
Student s = new Student().setName("Jessy").setStudentId("1234");
Teacher t = new Teacher().setName("Walter").setParkingLotId(17);
关于java - 如何使父类(super class)方法返回子类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28820288/