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

时间:2019-01-14 09:55:42

标签: java inheritance custom-type

Java中是否有一种方法可以基于原始Java基类创建自定义类,以使派生类具有语义?

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

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

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

3 个答案:

答案 0 :(得分:4)

您可能想要的是类型别名。 Java不支持此功能。

最好的方法是创建一个包装类,如下所示:

class LastName{
    private String value;
} 

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

String string = "Smith";

但要做:

String lastName = "Smith";

或仅使用注释和javadoc记录代码。


  

旁注:如果您仍想使用类型别名,则可能要使用{em>可以编译为Java代码(以及更多)的Kotlin programming language

答案 1 :(得分:2)

那些课程是最终的。

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

例如:

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

答案 2 :(得分:0)

String实现CharSequence接口,就像StringBufferStringBuilder类一样。您可以按照相同的过程进行操作。

public final class LastName implements CharSequence {

...

}