如何使超类方法返回子类的实例

MinusKube:

我有一个名为的类Test,一个名为SubTestwho扩展的类Text,我想在Test该类中有一个方法,该方法将返回被SubTest调用时的实例,我想这样做:

SubTest test = new SubTest().setTest("Hello!").setOtherTest("Hi!");

setTest()setOtherTest()方法应该是在Test类。

但是当我这样做时:

public Test setTest(String test) { return this; }

它仅返回的实例,Test因此我必须强制转换TestSubTest,但我不想这么做。

可能吗 ?如果是,怎么办?

谢谢,MinusKube。

isnot2bad:

让一个方法返回其所有者(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中构建Fluent API

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章