我不熟悉泛型。我有一个抽象类(1)和一个抽象方法。我有另一个抽象类(2)和一些抽象方法,我希望在一些DTO(3,4)中共享这些抽象方法。我想要一个(1)的具体扩展来处理任何扩展(2)的东西。
1.
//I want R to be anything here
public abstract class AggregatedEmailerRoute<R> extends RouteBuilder {
public static String EMAILER_ROUTE = "direct:aggregated-emailer-route";
@Override
public void configure() throws Exception {
from(EMAILER_ROUTE)
.bean(this, "convertToEmailBody(${body},${headers})")
.to("mock:wherever");
}
protected abstract String convertToEmailBody(List<R> body, Map<String,Object> headers);
public abstract class StagingError { //or should this be an interface?
public abstract Integer getId();
public abstract String getErrorNote();
public abstract LocalDateTime getErrorDate();
}
扩展StagingError的两个类:3.
public class Bill extends StagingError {
private Integer id;
private String errorNote;
private LocalDateTime getErrorDate;
//other fields, getters/setters
public class Payment extends StagingError {
private Integer id;
private String errorNote;
private LocalDateTime getErrorDate;
//other fields, getters/setters
public class StagingEmailErrorRoute extends AggregatedEmailerRoute<R extends StagingError> {
@Override
public void configure() throws Exception {
super.configure();
from(jpa(Bill.class.getName())
.query("some query")
)
.to(EMAILER_ROUTE);
from(jpa(Payment.class.getName())
.query("some other query")
)
.to(EMAILER_ROUTE);
}
@Override //But here I want to work on anything that implements StagingError so this method can work on Payment OR Bill
protected String convertToEmailBody(List<T extends StagingError> body, Map<String,Object> headers) {
return
body
.stream()
.map(e -> "Staging entity ID: " + e.getId() +
"\n\tError: " + e.getErrorNote() +
"\n\tWhen: " + format("%tc",e.getErrorDate().atZone(EST.get())) +
"\n")
.collect(joining("\n"));
我想你只需要一个抽象类型的字符串还是一个抽象类型的字符串?对不起,如果我错了。。。我不能评论,所以我张贴类似的答案。
我正在用Java构建一个库管理应用程序。 我有一个名为 的抽象类。它有一个称为 的抽象方法。 有一个名为< code>Newspaper的子类,它当然实现了< code>equals,其签名与< code>equals在< code>Material中的签名完全相同: Java无法解析< code > elementoacomparer 的任何方法。它们都存在于< code >报纸中,该报纸确实扩
问题内容: 我收到一个错误,程序中有这个结构 错误指向Circle扩展Shapes < T >类,其中指出“ T无法解析为类型”。如果将T设置为字符串,错误将消失,但这也意味着我只能使用一种数据类型。我应该在<>中放入什么,以便可以使用任何数据类型(字符串,整数,双精度型等),或者这样做是错误的? 问题答案: 有两个不同的概念。当你写 这意味着您正在创建一个类,该类在实例化时将被某个类参数化。您不
问题内容: 我之前了解到抽象类可以扩展具体类。尽管我没从JAVA设计师那里看到原因,但是没关系。我还了解到,扩展具体类的抽象类可以使重写的方法抽象。为什么?您可以提供有用的用例吗?我正在尝试学习设计模式,我不想错过任何东西。 这是示例: 问题答案: 如果我有一组想要默认实现的类(以便它们可以从扩展),并且想要强制提供自己的实现(在这种情况下使其抽象为子类会强制执行此操作。) 当然,此示例中的另一种
我在我的一个实用程序类中有一个方法,它接受一个集合和一个类对象,并返回一个Iterable实例,该实例可以遍历作为指定类实例的集合的所有成员。其签名为: 这对于大多数用例都非常有效,但现在我需要将其与泛型类
在java中,是否可以使用通配符定义抽象方法,但在实现中使用具体类型 eg: 在这样的抽象类中定义抽象方法 实现如下抽象方法,其中CorporateServer扩展了用户:
问题内容: 我有一个像这样的课程: 但是编译器说:。 我如何获得的课程? 问题答案: 绝对有可能将其提取出来,因为它不是在运行时定义的,而是在编译时由定义的。 这是一个启动示例,您可以如何在抽象类的构造函数中提取所需的泛型超类型,同时考虑子类的层次结构(以及在无需显式提供类型的情况下将其应用于泛型方法的实际用例)):