[英]How to call parent methods in Java/Groovy
我是 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
class 開始。
您正在嘗試以錯誤的方式訪問/調用 static 方法Inventory
of the TestingProduct
。 為了訪問 static 方法,您不需要 class 的任何 object 實例。因此,您應該使用TestingProduct.Inventory()
TestingProduct().Inventory()
) 。
第二件事是,您的方法Inventory()
返回ProductInventoryEvent
而不是字符串。 所以你應該改變你想要初始化的變量的類型。 下面是代碼的樣子:
public class HelloWorld {
public static void main(String[] args){
ProductInventoryEvent testin = TestingProduct.Inventory();
System.out.println(testin);
}
}
您應該更改的另一件事是TestingProduct
class 中Inventory()
方法的訪問修飾符。您應該使用 package 私有或公共訪問修飾符而不是私有訪問修飾符。 所以代碼應該是這樣的:
public class TestingProduct {
static ProductInventoryEvent Inventory(){
def invent = new ProductInventoryEvent(
productId:'1',
productIdType:'2',
eventType:'3',
eventDate: setDateNow(),
)
return invent;
}
}
我還認為,您不能在父級 class 中調用私有方法。您必須將訪問修飾符更改為受保護
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.