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
,其中 LastName
是 String
的自定义类型,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
接口,就像 StringBuffer
和 StringBuilder
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).
在 Java 中有没有一种方法可以创建基于原始 Java 基础 class 的自定义 class 以赋予派生的 class 语义?
示例:我想创建一个 LinkedHashMap<LastName, Age> ages
,其中 LastName
是 String
的自定义类型,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
接口,就像 StringBuffer
和 StringBuilder
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).