AWS Lambda构造函数重载Java POJO



我基于这个URL创建了一个Lambda:https://docs.aws.amazon.com/lambda/latest/dg/java-handler-io-type-pojo.html.主要有三类:

package example;
import com.amazonaws.services.lambda.runtime.Context; 
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class HelloPojo implements RequestHandler<RequestClass, ResponseClass>{   
public ResponseClass handleRequest(RequestClass request, Context context){
String greetingString = String.format("Hello %s, %s.", request.firstName, request.lastName);
return new ResponseClass(greetingString);
}
}

是Lambda处理程序。

package example;
public class RequestClass {
String firstName;
String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public RequestClass(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public RequestClass() {
}
}

是requestClass。

package example;
public class ResponseClass {
String greetings;
public String getGreetings() {
return greetings;
}
public void setGreetings(String greetings) {
this.greetings = greetings;
}
public ResponseClass(String greetings) {
this.greetings = greetings;
}
public ResponseClass() {
}
}

是响应类。

输入的内容大致如下:

{ "firstName": "John", "lastName": "Doe" }  

话虽如此,我确实有一些关于RequestClass的问题。现在,它依赖于作为输入的一部分提供的firstName和lastName。但是,假设只提供了一个firstName,我希望在RequestClass中有另一个构造函数,只提供一个firstName参数,并将lastName初始化为默认的lastName,类似

public RequestClass(String firstName) {
this.firstName = firstName;
this.lastName = "defaultLastName";
}

当我尝试沿着这些行做一些事情并访问handleRequest中的变量时,我可以获得firstName,但lastName始终为null(猜测是因为我没有将其作为输入的一部分提供(。有什么原因可以解释为什么会发生这种情况,以及我可以做些什么,以便在访问处理程序类中的lastName时,我能够获得"defaultLastName"而不是null?

请让我知道,如果有进一步的澄清,我应该补充,我不经常发布到StackOverflow,并想确保我的问题是适当的!

您可以在默认构造函数中设置一些默认值。

public RequestClass() {
firstName = "defaultFirstName";
lastName = "defaultLastName;
}

然后使用this调用参数化构造函数。

public RequestClass(String firstName) {
this();
this.firstName = firstName;
}

构造函数重载的读数:https://beginnersbook.com/2013/05/constructor-overloading/

相关内容

  • 没有找到相关文章

最新更新