如何在Java/Govy中调用父方法



我是Java和groovy的新手,我主要用Python编写代码。我正在努力理解为什么代码不起作用。我得到的错误是groovy.lang.MissingMethodException: No signature of method: static HelloWorld.TestingProduct() is applicable for argument types: () values: []

我的任务是在一个项目中添加eventdate作为sysdate,我只是想了解如何通过本地测试来添加它

import groovy.transform.ToString
import java.time.OffsetDateTime
import java.time.format.DateTimeFormatter

public class HelloWorld{
public static void main(String[] args){
String testin = TestingProduct().Inventory()
System.out.println(testin);
}
}

class Parent {
private String setDateNow() {
OffsetDateTime now = OffsetDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME;
return formatter.format(now);
}
}
class TestingProduct extends Parent {
private static ProductInventoryEvent Inventory(){
def invent = new ProductInventoryEvent(
productId:'1',
productIdType:'2',
eventType:'3',
eventDate: setDateNow(),
)
return invent
}
}

@Canonical()
@ToString(includeNames = true)
class ProductInventoryEvent {
String productId
String productIdType
String eventType
String eventDate
}

您的代码中很少有错误。让我先从HelloWorld类开始。

您试图以错误的方式访问/调用TestingProduct的静态方法Inventory。为了访问静态方法,您不需要该类的任何对象实例。因此,应该使用TestingProduct.Inventory()而不是TestingProduct().Inventory()

第二件事是,方法Inventory()返回的是ProductInventoryEvent,而不是字符串。因此,您应该更改要初始化的变量的类型。以下是代码的样子:

public class HelloWorld {
public static void main(String[] args){
ProductInventoryEvent testin = TestingProduct.Inventory();
System.out.println(testin);
}
}

您应该更改的另一件事是TestingProduct类中Inventory()方法的访问修饰符。您应该使用packageprivate或publicaccess修饰符,而不是private。所以代码应该看起来像:

public class TestingProduct {
static ProductInventoryEvent Inventory(){
def invent = new ProductInventoryEvent(
productId:'1',
productIdType:'2',
eventType:'3',
eventDate: setDateNow(),
)
return invent;
}
}

我还认为,您不能在父类中调用私有方法。您必须将访问修饰符更改为受保护的

相关内容

  • 没有找到相关文章

最新更新