我有一个名为的类Test
,一个名为SubTest
who扩展的类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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句