泛型: public <T> void readData(T... a){} 数据 ----> readData() 判断T的具体类型,分别处理方法多态: public void readData(String a) {//针对String的处理} public void readData(Integer a) {//针对Integer的处理} public void readData(Double a) {//针对Double的处理} public void readData(String[] a) {//针对String数组的处理} 而你不过什么数据,用同一个名字的方法readData 就是对应上相应的方法了,这是面向对象
总觉得他那个还是面向过程。其实是这样,我看到一个考试题,列出了一段程序,中间会有几处空白问应该填什么。问题倒不难,但是这段程序的写法是我所不熟悉的。 程序的逻辑大致是这样: 有1至10的英文数字(one two three……),把开头为t的在控制台打出来。 不知道大家看到这样的需求会去怎么写代码,但估计大多人和我想的都差不多。那道考试题是继承Iterator和Iterable,用了我所不熟悉的构思写的程序。最后在main方法中像以下代码这样输出。Extraction和StringStartsEvaluator都是自己的实现类。List<String> target = Arrays.asList(“one”, “two”, “three”, “four”, “five”, “six”, “seven”, “eight”, “nine”, “ten”); Extraction<String> e = new Extraction<String> (target, new StringStartsEvaluator(“t”)); for (String s : e) { System.out.println(s); }
我描述下你的结构把 你是想这样?interface Money { public void sumMoney(); } class RMB implements Money { public void sumMoney() { //具体实现怎么加人民币 } } class Dollars implements Money { public void sumMoney() { //具体实现怎么加美元 } } class Euro implements Money { public void sumMoney() { //具体实现怎么加欧元 } }
public <T> void readData(T... a){}
数据 ----> readData()
判断T的具体类型,分别处理方法多态:
public void readData(String a) {//针对String的处理}
public void readData(Integer a) {//针对Integer的处理}
public void readData(Double a) {//针对Double的处理}
public void readData(String[] a) {//针对String数组的处理}
而你不过什么数据,用同一个名字的方法readData
就是对应上相应的方法了,这是面向对象
总觉得他那个还是面向过程。其实是这样,我看到一个考试题,列出了一段程序,中间会有几处空白问应该填什么。问题倒不难,但是这段程序的写法是我所不熟悉的。
程序的逻辑大致是这样:
有1至10的英文数字(one two three……),把开头为t的在控制台打出来。
不知道大家看到这样的需求会去怎么写代码,但估计大多人和我想的都差不多。那道考试题是继承Iterator和Iterable,用了我所不熟悉的构思写的程序。最后在main方法中像以下代码这样输出。Extraction和StringStartsEvaluator都是自己的实现类。List<String> target =
Arrays.asList(“one”, “two”, “three”, “four”, “five”,
“six”, “seven”, “eight”, “nine”, “ten”);
Extraction<String> e = new Extraction<String>
(target, new StringStartsEvaluator(“t”));
for (String s : e) {
System.out.println(s);
}
我描述下你的结构把
你是想这样?interface Money {
public void sumMoney();
}
class RMB implements Money {
public void sumMoney() {
//具体实现怎么加人民币
}
}
class Dollars implements Money {
public void sumMoney() {
//具体实现怎么加美元
}
}
class Euro implements Money {
public void sumMoney() {
//具体实现怎么加欧元
}
}
无论如何也是要区分传入类型的
用接口还得弄个工厂方法
工厂方法不还是得 方法多态或者instance of除非你还要封装很多其他操作
否则一个操作方法多态就够了
要你实现Extraction类和StringStartsEvaluator是吧?
Extraction这不就是泛型嘛……
for (String s : e) {
System.out.println(s);
}
就出来了,跟我的思路完全不一样。倒也不是说就是范型,其实原本接口这方面就没怎么用过(用的无非就是现成的框架),也可以说从来没做过设计,我估计多数人可能也和我差不多吧(当然比我强的一定也很多)。一直也没搞懂这个接口什么的该怎么用起来,所以自个琢磨了这个需求。
原来是这样啊,人家为了用for each这种语法结构而实现了Iterable接口
这个其实很多类似的地方可以注意到的
比如你写一个类,你可以让它实现Comparable接口,然后
你就可以用Arrays.sort()方法直接对它进行排序了不过还是那句话,不要为了接口而接口
当你哪一天,你突然发现你的某些已经继承了不同父类的子类要在某种程度上统一管理
这个时候,你就会发现接口能派上用场了