1.字符串不适合代替其他的值类型
当一段数据从文件、网络、或者键盘设备,进入到程序之后,它通常以字符串的形式存在。有一种自然的倾向是让它继续保留这种形式,但是,只有当这段数据本质上确实是文本信息时,这种想法才是合理的。
2.字符串不适合替代枚举类型
枚举类型比字符串更加适合用来表示枚举类型的常量
3.字符串不适合代替聚集类型
如果一个实体有多个组件,用一个字符串来表示这个实体通常是不恰当的
String userInfo="zhaohui#25";
更倾向于编写一个类来描述这个数据集
UserInfo userInfo2=new UserInfo("zhaohui", 25);
class UserInfo{
private String userName;
private int age;
public UserInfo(String userName,int age){
this.userName=userName;
this.age=age;
}
//set,get方法....
}
4.字符串不适合代替能力表
public class ThreadLocal{
private ThreadLocal(){}
public static void set(String key,Object obj);
public static void get(String key);
}
问题:这些字符串代表一个共享的全局命名空间。要使这些方法可行,客户端提供的字符串键必须是唯一的。
其实可以使用一个不可伪造的键(有时候称为能力键)来替换字符串
public class ThreadLocal{
private ThreadLocal(){}
public static class Key{
Key(){}
}
public static Key getKey(){
return new Key();
}
public static void set(Key key,Object value);
public static Object get(Key key);
}