我有一个Xtend子类PubnubMessage
,它继承了一个字段并具有通过活动注释生成的构造函数。我可以在生成的Java代码中看到公共构造函数,并且它正确接受该字段的一个参数,但是当我尝试从另一个Xtend类中调用该构造函数时,如下所示:
override successCallback(String channel, Object message)
{
send(new PubnubMessage(message))
}
我在构造函数调用中遇到此错误:
Invalid number of arguments. The constructor PubnubMessage() is not applicable for the arguments (Object)
只有默认的no-arg构造函数是可见的,但是由于生成了一个显式构造函数,所以它甚至不应该是默认构造函数。如果我使用相同的调用创建一个Java类:
new PubnubMessage(message);
没有错误。以下是相关代码:
SocketMessage.xtend
@JsonData class SocketMessage
{
Object message
}
SocketMessage.java(生成Xtend)
@JsonData
@SuppressWarnings("all")
public class SocketMessage {
private final Object message;
@JsonCreator
public SocketMessage(@JsonProperty final Object message) {
super();
this.message = message;
}
PubnubMessage.xtend
@JsonData class PubnubMessage extends SocketMessage {}
PubnubMessage.java(生成Xtend)
@JsonData
@SuppressWarnings("all")
public class PubnubMessage extends SocketMessage {
@JsonCreator
public PubnubMessage(@JsonProperty final Object message) {
super(message);
}
我遗漏了生成的hashCode(),equals()和toString()。关于这个Java代码的一切对我来说似乎都很好,就像我说的,我可以从其他Java类成功调用它,但不能从Xtend成功调用它。