这个 class 是如何工作的,或者如何使用它?
How does this class work or how can you use it?
我摔倒在 class 上,看起来像这样:
public final class DatabaseType{
public static final DatabaseType TYPE_LIMITED_TEXT = new DatabaseType();
public static final DatabaseType TYPE_UNLIMITED_TEXT = new DatabaseType();
public static final DatabaseType TYPE_DATE = new DatabaseType();
public static final DatabaseType TYPE_DECIMAL = new DatabaseType();
private DatabaseType(){
}
public String toString(){
return "DatabaseType";
}
}
我需要设置类型,但我想了解这里发生了什么,但我不知道 class 是如何工作的。
无论我使用什么变量,它总是 return 一个空的数据库类型,没有任何信息。所以我想知道如何使用这样的 class。也许这种类型有一个名字class?
基本上,class 列出了四个可枚举常量,您可以像这样在方法签名中使用它们
public DatabaseType getTypeOfDB();
在客户端代码中,您将有一种类型安全的方法来比较常量:
if (getTypeOfDB() == DatabaseType.TYPE_LIMITED_TEXT) {
doSomething();
}
尽管实现看起来有点笨拙,但正如 Gimby 在评论中指出的那样,它非常接近地模拟了 Java 5 enum
。设计中的好点子如下:
- 构造函数是
private
,意味着只有在class中声明的public static final DatabaseType
个实例可以存在
- class 是
final
,因此您无法通过在子 class 中添加更多常量来解决上述限制
- class 中的常量字段具有 强类型 ,即它们不是
int
,而是 DatabaseType
,这有助于消除客户端代码 中由拼写错误或 "magic numbers" 引起的错误
做同样事情的现代方法是改用枚举:
public enum DatabaseType {
TYPE_LIMITED_TEXT, TYPE_UNLIMITED_TEXT, TYPE_DATE, TYPE_DECIMAL;
}
如果您调用函数 toString(),您将始终获得字符串:DatabaseType
。
据我了解,您想 return 您创建的 DatabaseType 变量的名称。
创建一个变量private String name;
并像这样修改构造函数:
private DatabaseType(String name){
this.name = name;
}
同时创建一个函数
public String getName(){
return this.name;
}
最后,当您创建 databaseType 对象时,请按如下方式创建它:
public static final DatabaseType TYPE_LIMITED_TEXT = new DatabaseType("TYPE_LIMITED_TEXT");
我摔倒在 class 上,看起来像这样:
public final class DatabaseType{
public static final DatabaseType TYPE_LIMITED_TEXT = new DatabaseType();
public static final DatabaseType TYPE_UNLIMITED_TEXT = new DatabaseType();
public static final DatabaseType TYPE_DATE = new DatabaseType();
public static final DatabaseType TYPE_DECIMAL = new DatabaseType();
private DatabaseType(){
}
public String toString(){
return "DatabaseType";
}
}
我需要设置类型,但我想了解这里发生了什么,但我不知道 class 是如何工作的。 无论我使用什么变量,它总是 return 一个空的数据库类型,没有任何信息。所以我想知道如何使用这样的 class。也许这种类型有一个名字class?
基本上,class 列出了四个可枚举常量,您可以像这样在方法签名中使用它们
public DatabaseType getTypeOfDB();
在客户端代码中,您将有一种类型安全的方法来比较常量:
if (getTypeOfDB() == DatabaseType.TYPE_LIMITED_TEXT) {
doSomething();
}
尽管实现看起来有点笨拙,但正如 Gimby 在评论中指出的那样,它非常接近地模拟了 Java 5 enum
。设计中的好点子如下:
- 构造函数是
private
,意味着只有在class中声明的public static final DatabaseType
个实例可以存在 - class 是
final
,因此您无法通过在子 class 中添加更多常量来解决上述限制
- class 中的常量字段具有 强类型 ,即它们不是
int
,而是DatabaseType
,这有助于消除客户端代码 中由拼写错误或 "magic numbers" 引起的错误
做同样事情的现代方法是改用枚举:
public enum DatabaseType {
TYPE_LIMITED_TEXT, TYPE_UNLIMITED_TEXT, TYPE_DATE, TYPE_DECIMAL;
}
如果您调用函数 toString(),您将始终获得字符串:DatabaseType
。
据我了解,您想 return 您创建的 DatabaseType 变量的名称。
创建一个变量private String name;
并像这样修改构造函数:
private DatabaseType(String name){
this.name = name;
}
同时创建一个函数
public String getName(){
return this.name;
}
最后,当您创建 databaseType 对象时,请按如下方式创建它:
public static final DatabaseType TYPE_LIMITED_TEXT = new DatabaseType("TYPE_LIMITED_TEXT");