[英]using Java interfaces
我需要创建接口MultiLingual,该接口允许以不同的语言显示对象的数据(不是数据本身,而是诸如“作者”,“标题”之类的介绍)。
打印的数据如下所示:
3 grudnia 1998
10th of June 1924
Autor: Tolkien
Tytul: LoTR
Wydawnictwo: Amazon 2010
Author: Mitch Albom
Title: Tuesdays with Morrie
Publishing House: Time Warner Books 2003
37 360,45 PLN
5,850.70 GBP
3rd of December 1998
10th of June 1924
Author: Tolkien
Title: LoTR
Publishing House: Amazon 2010
Author: Mitch Albom
Title: Tuesdays with Morrie
Publishing House: Time Warner Books 2003
37,360.45 GBP
5,850.70 GBP
测试代码如下:
public class Main {
public static void main(String[] args){
MultiLingual gatecrasher[]={ new Data(3,12,1998),
new Data(10,6,1924,MultiLingual.ENG),
new Book("LoTR", "Tolkien", "Amazon", 2010),
new Book("Tuesdays with Morrie",
"Mitch Albom", "Time Warner Books",2003,
MultiLingual.ENG),
new Money(1232895/33.0,MultiLingual.PL),
new Money(134566/23.0,MultiLingual.ENG),
};
for(int i=0;i < gatecrasher.length;i++)
System.out.println(gatecrasher[i]+"\n");
for(int i=0;i < gatecrasher.length;i++)
System.out.println(gatecrasher[i].get(MultiLingual.ENG)+"\n");
}
}
所以我需要在MultiLingual接口中引入常量ENG,PL以及方法get(int language):
public interface MultiLingual {
int ENG = 0;
int PL= 1;
String get(int lang);
}
然后我上课Book。 问题始于构造函数。 其中之一需要采用MultiLingual.ENG作为参数,但是如何实现呢? 这是正确的方法吗? :
class Book implements MultiLingual {
private String title;
private String publisher;
private String author;
public Book(String t, String a, String p, int y, MultiLingual lang){
}
还是应该将此MultiLingual.ENG视为int变量,它将只会自动更改接口中的常量?
该书的第二个构造函数没有采用MultLingual作为参数,但是以下实现存在某种错误:
public Book(String t, String a, String p, int y){
Book someBook = new Book(t, a, p, y, MultiLingual m);
}
我可以发送int m代替MultiLingual m,但是如果语言设置为PL或ENG,我将无法控制。
最后是Boook的get()方法,但我认为至少这应该可以正常工作:
public String get(int lang){
String data;
if (lang == ENG){
data = "Author: "+this.author+"\n"+
"Title: "+this.title+"\n"+
"Publisher: "+this.publisher+"\n";
}
else {
data = "Autor: "+this.author+"\n"+
"Tytul: "+this.title+"\n"+
"Wydawca: "+this.publisher+"\n";
}
return data;
}
@Override
public String toString(){
return "";
}
}
您最好使用enum
来代表不同的语言
public interface MultiLingual {
enum Language { ENG, PL }
String get(Language lang);
}
然后, Book
类的构造函数可以采用MultiLingual.Language
的实例。
public Book(String t, String a, String p, int y, MultiLingual.Language lang) {
}
在界面内部,代表语言的整数应该是静态的,您不想在代码运行时意外地重新声明它们。 然后让您的书本课程为它的语言指定一个int值。
Book someBook =新书(t,a,p,y,多语言m); 由于MultiLingual是一个接口,因此无法使用,它没有任何实例可以传递。
它必须是一个int。 这将类似于MultiLingual.ENG或.PL
您是否考虑过使用ResourceBundle ? 这意味着,您可以使用属性文件来定义特定于语言环境的数据,从而使以后添加更多语言环境变得非常容易。 您的数据对象将返回一些键以供标签转换,然后根据您的应用程序,该人员可以通过ResourceBundle解析正确的标签。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.