Java中是否有一种方法可以基于原始Java基类创建自定义类,以使派生类具有语义?
示例:我想创建一个LinkedHashMap<LastName, Age> ages
,其中LastName
是String
的自定义类型,而Age
是从Integer
派生的自定义类型。我只是试图创建自己的课程
public class LastName extends String {
//(no code in here, LastName has the same functionality as String)
}
但这是不可能的。还有另一种方法可以实现我想要的吗?
答案 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
接口,就像StringBuffer
和StringBuilder
类一样。您可以按照相同的过程进行操作。
public final class LastName implements CharSequence {
...
}