java - 创建所有内容的类的最大缺点是什么?而不是 String name = person.getName() ,而是 Name name = person.getName();

标签 java oop class object

如果我要创建所有内容的类型,而不是使用字符串和原始类型,最大的缺点是什么?

通常它看起来像:

String name = person.getName();
int age = person.getAge();

但现在“一切”都被对象化了,你很少处理字符串(除非你需要特定的字符串操作)。

Name name = person.getName();
Age age = person.getAge();

其中NameAge将是(在本例中)简单的容器类:

public class Name {

    private final String name;

    public Name(final String name) {
        this.name = name;
    }

    @Overide
    public String toString() {
        return name;
    }

}

但是,在未来,他们可以有更多的方法和验证等。

但底线是你基本上为所有东西创建类型。

我知道这使代码更加类型安全,但是这种代码约定的最大缺点是什么?

最佳答案

代码变得更加冗长,并且并非所有库都能同样很好地处理这种模式。

我尝试在 Java 代码中取得平衡,我使用了相当多的原语和字符串,但某些数据类型(例如货币金额和社会安全号码)有自己的专用类。 SSN 有其内部验证规则。货币计算受益于对舍入的明确控制,并防止以不同货币添加金额。

在比 Java 更简洁的语言中,我倾向于比在 Java 中更多地使用这些专用类。

关于java - 创建所有内容的类的最大缺点是什么?而不是 String name = person.getName() ,而是 Name name = person.getName();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7725365/

相关文章:

java - Elasticsearch:使用 java native api 重写查询

java - 在类路径中找不到 Log4J

c# - oo-spaghettio 网络架构

c# - 从基类继承

class - 智能指针和析构函数

Java:JFrame 分辨率?

java - 带有嵌入式 Jetty 服务器的 Jersey

java - 一种在类似属性映射的 JSON 中验证键/值的可维护方法

c++ - 重载赋值运算符还是使用默认运算符?

不使用 def __init__(self) 的 Python 类