gpt4 book ai didi

java - Java 8 中的调用方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:07:09 28 4
gpt4 key购买 nike

我有一个方法,

private String createSubjectColumnForOutgoing(Message message)
{
//TODO : Changes for blocking messages of spam users


if(message.getReceiverEnvelope() != null && message.getReceiverEnvelope().getUser() != null && message.getReceiverEnvelope().getUser().isBlocked())
{
return I18N.IN_REVIEW_BY_TEAM.msg();
}


return StringUtils.deSanitizeSpecialCharacters(message.getSubject());
}

这个方法是这样调用的,

case OUTGOING:
table.addGeneratedColumn(I18N.MESSAGETABLE_HEADER_SUBJECT.msg(), this::createSubjectColumnForOutgoing);
break;

类中的构造函数是,

public MessageTable(Directory directory, boolean withFilter, Device device)
{
this(directory, new FilterConfiguration(withFilter), device);
}

public MessageTable(Directory directory, FilterConfiguration filterConfiguration, Device device)
{
Objects.requireNonNull(directory);
Objects.requireNonNull(device);

this.directory = directory;

dateTimeFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT).withLocale(LocaleAware.super.getLocale());

tableFooter = createTableFooter();

openButton = createOpenButton();
newButton = createNewButton();
messageTable = createTable(device);

tableFooter.addComponent(newButton, 0);
tableFooter.addComponent(openButton, 1);

final VerticalLayout layout = new VerticalLayout();
layout.addComponent(createFilterComponent(filterConfiguration));
layout.addComponents(tableFooter, messageTable);
layout.setComponentAlignment(tableFooter, Alignment.MIDDLE_LEFT);

rootLayout = layout;
setCompositionRoot(rootLayout);

}

当调用此方法 createSubjectColumnForOutgoing 时,没有传递任何参数,并且运行良好。我无法理解 Message 对象中数据的来源。我用谷歌搜索但无法理解。请帮忙。提前致谢。

addGeneratedColumn的代码

public void addGeneratedColumn(Object id, Function<BEANTYPE, ?> generatedColumn)
{
String header = null;
if(id instanceof String)
{
header = (String) id;
}
addGeneratedColumn(header, id, (source, itemId, columnId) -> generatedColumn.apply(itemId));
}

最佳答案

this::createSubjectColumnForOutgoing是方法引用,而不是 createSubjectColumnForOutgoing 的执行方法。

table.addGeneratedColumn()您传递方法引用的方法可能正在调用此方法引用实现的功能接口(interface)的方法。如果是,它会传递 Message。实例。

您没有包含 addGeneratedColumn() 的代码,所以我不知道它需要什么类型的功能接口(interface)(可能是 Function )。

编辑:

根据您的编辑,Function<BEANTYPE, ?> generatedColumn是你传递给addGeneratedColumn()的方法引用实现的功能接口(interface).这意味着 generatedColumn.apply(itemId)是执行 createSubjectColumnForOutgoing() 的语句方法,你可以看到 itemId被传递给方法。这意味着 itemId必须是 Message实例。

请注意 addGeneratedColumn(Object id, Function<BEANTYPE, ?> generatedColumn)不执行 createSubjectColumnForOutgoing()方法之一。它将可以执行该方法的功能接口(interface)(由 lambda 表达式实现)传递给第二个 addGeneratedColumn。方法。

关于java - Java 8 中的调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53280478/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com