2012-08-13 47 views
0

我想问,如果我们应该外部化toString()实现中使用的字符串文字。让我举一个例子: -我们应该外部化验证字符串&toString()方法吗?

想这是我的toString()实现: -

@Override 
public String toString() { 
return "First Name: " + firstName + "," + "Last Name: " + lastName; 
} 

在这里,我们要外化 “名字:” & “姓:” 与否?

另一种情况是使用验证字符串。如果我正在使用名和名创建名称对象,并且名字不能为空。然后我把下面的检查在我的构造函数: -

if(firstName == null) { 
throw new NullPointerException("firstName is null"); 
} 

我们应该外部化“名字为空”或不?

感谢

+2

你通过外化理解了什么? – m3th0dman 2012-08-13 16:55:15

+0

你能否提供一些关于你认为应该如何完成的暗示? – 2012-08-13 16:55:50

+0

字符串文字已经在Object实例的外部。 – 2012-08-13 16:56:25

回答

4

你真的只需要做的,如果你要允许调试消息要国际化,因为toString真不该向用户显示

+0

我们在验证一些参数时编写的消息如下所示: - if(firstName == null){throw new NullPointerException(“firstName is null”);} – user1522820 2012-08-13 17:41:41

+0

我们应该外部化“firstName为null”吗? – user1522820 2012-08-13 17:42:16

+0

@ user1522820异常与'toString()'处于同一级别,它们不应该被用户看到。如果支持人员不会说英语,那么你应该。我见过的大多数产品都不会尝试将这些信息国际化,因为支持团队通常会说英语。 – 2012-08-13 17:48:31

1

有用的链接:http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Fconcepts%2Fconcept-string-externalization.htm

你可能也想看看这个: http://tika.apache.org/

所以当tika给你一个字符串的语言,你应该wri te这样的Java方法:

enum languageToTransformString //create however many languages you want 

public String toString(String lang) 
{ 
    languageToTransformString = lang; 
    switch languageToTransformString: 
     case german:   
     firstNameText = "deutchName: "; 
     lastNameText = "deutchLastName: "; 
     return new String(firstnameText + firstName + lastNameText + lastName); 
     break; 
     case eng: 
     //do stuff 

     firstNameText = "engName: "; 
     lastNameText = "engLastName: "; 
     return new String(firstNameText + firstName + lastNameText + lastName); 
     break; 
     default: 
     return new String("We don't support your language. Sorry."); 

} 
+0

变量firstNameText和lastNameText应该用不同的语言格式化。我同意上面的答案,除非你将这个返回给用户,在这种情况下,你会想要使用这样的枚举。 – 2012-08-13 17:20:41

相关问题