gpt4 book ai didi

java - 如何让 this.name 在值对象构造函数的类定义中工作?

转载 作者:行者123 更新时间:2023-12-01 19:41:05 25 4
gpt4 key购买 nike

简而言之,我第一次尝试构建几个值对象 (VO),但无法解析构造函数中的 this.name 用法。

我刚刚从本文中发现了值对象的概念(“ Convert Guard Clauses to Value Objects ”),并且在尝试实现示例代码时遇到了一些问题,作者过度简化了示例。我已经解决了所有问题,除了最后一个错误,该错误阻止使用以下编译器消息构建代码:

Compilation failed due to following error(s). 

Name.java:6: error: cannot find symbol
this.name = name;
^
symbol: variable name

PhoneNumber.java:10: error: cannot find symbol
this.phoneNumber = phoneNumber;
^
symbol: variable phoneNumber

2 errors

下面是我的项目的四个类文件:

Event.java

public class Event {
public void registerVisitor (Name name, PhoneNumber phoneNumber) {
// Do actual registration...
}
}

名称.java

public class Name {
public Name (String name) {
if (name == null || name.trim ().isEmpty ()) {
throw new IllegalArgumentException ("Name was empty");
}
this.name = name;
}
//...
}

PhoneNumber.java

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class PhoneNumber {
public PhoneNumber (String phoneNumber) {
Pattern PHONE_PATTERN = Pattern.compile("\\d{10}|(?:\\d{3}-){2}\\d{4}|\\(\\d{3}\\)\\d{3}-?\\d{4}");
if (!PHONE_PATTERN.matcher(phoneNumber).matches()) {
throw new IllegalArgumentException("Number invalid");
}
this.phoneNumber = phoneNumber;
}
//...
}

Main.java

class Main {
public static void main (String[]args) {
Event eventVar = new Event (); //
Name nameVar = new Name("MyName Test");
PhoneNumber phNumVar = new PhoneNumber("999-999-9999");
eventVar.registerVisitor(nameVar, phNumVar);
}
//...
}

就“预期结果”而言,我想做的就是让它成功编译并实例化对象。我的兴趣在于能够创建可以有效地作为 self 验证输入的 VO。

PS:我在 Windows 系统上使用 JDK 8。

最佳答案

您的名称类没有名为“名称”的字段。

public class Name {
private final String name; //added field

public Name (String name) {
if (name == null || name.trim ().isEmpty ()) {
throw new IllegalArgumentException ("Name was empty");
}
this.name = name;
}
//...
}

关于java - 如何让 this.name 在值对象构造函数的类定义中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55379195/

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