Java 中有没有一种方法可以基于 java.lang 基本类型(例如字符串)构建自定义类型?

Is there a way in Java to build custom types based on java.lang base Types (e.g. String)?

在 Java 中有没有一种方法可以创建基于原始 Java 基础 class 的自定义 class 以赋予派生的 class 语义?

示例:我想创建一个 LinkedHashMap<LastName, Age> ages,其中 LastNameString 的自定义类型,Age 是从 Integer 派生的自定义类型。我只是想创建自己的 class

public class LastName extends String {
    //(no code in here, LastName has the same functionality as String)
}

但这是不可能的。还有其他方法可以实现我想要的吗?

那些 class 是最终的。

通常的处理方法是创建包装器 class。

例如:

public class LastName {
    private final String value;
    public LastName(String value) {
        this.value = value;
    }
    public String get() { return value; } 
}

A​​ String 实现了一个 CharSequence 接口,就像 StringBufferStringBuilder class 一样。您可以遵循相同的过程。

public final class LastName implements CharSequence {

...

}

您可能需要的是类型别名。 Java 不支持这个。

最好的方法是创建一个包装器 class,像这样:

class LastName{
    private String value;
} 

另一种方法是正确命名变量,例如不要这样做:

String string = "Smith";

而是:

String lastName = "Smith";

或者只是用注释和 javadoc 记录您的代码。


Sidenote: If you still want to use type aliases you may want to use the Kotlin programming language which can compile to java-code (and more).