标题: set<?> set = new hashSet<?>()的疑惑 [打印本页] 作者: jttsai 时间: 2013-11-26 15:46 标题: set<?> set = new hashSet<?>()的疑惑 set<?> set = new hashSet<?>()与hashSet<?> set = new hashSet<?>();区别在哪?为什么?
为什么set<?> set = new hashSet<?>()这个是常用的呢?由什么优点啊?不解作者: 小痞痞 时间: 2013-11-26 15:58
set<?> set = new hashSet<?>()
面向接口编程对以后的升级比较好、可以将set的引用指向treeset也可以的
而hashSet<?> set = new hashSet<?>(); 对以后的升级不是很好 以后的引用就只能是hashset 不利于程序的复用性作者: 殷挥笔 时间: 2013-11-26 19:28
实例化以后都是HashSet类型的对象,第一个在实例化的时候会优先调用父类的构造方法,体现了java的多态特性(动态多态 父类类型=子类对象),第二个则不然作者: cuilitang 时间: 2013-11-27 10:57
兄弟,你说的是多态啊,多态在工厂模式中常用,可以解耦和,通过用户输入或者配置文件增强序的灵活性无需修改源代码
package cn.itcast.factory;
import java.util.Scanner;
public class EasyFactoryDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String style = sc.next();
Style s = null;
s = EasyFactory.getInstance(style);
s.show();
}
}
interface Style{
public abstract void show();
}
class WinXP implements Style{
@Override
public void show() {
System.out.println("XP风格主题");
}
}
class Win7 implements Style{
@Override
public void show() {
System.out.println("Win7风格主题");
}
}
//为了不修改主程序,增加一个可以根据参数制造所有对象的Factory
class EasyFactory{
public static Style getInstance(String className){