A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jttsai 山林野马   /  2013-11-26 15:46  /  1186 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

set<?> set = new hashSet<?>()与hashSet<?> set = new hashSet<?>();区别在哪?为什么?
为什么set<?> set = new hashSet<?>()这个是常用的呢?由什么优点啊?不解

评分

参与人数 1黑马币 +5 收起 理由
枫儿 + 5 神马都是浮云

查看全部评分

3 个回复

倒序浏览
set<?> set = new hashSet<?>()
面向接口编程对以后的升级比较好、可以将set的引用指向treeset也可以的
而hashSet<?> set = new hashSet<?>();       对以后的升级不是很好    以后的引用就只能是hashset     不利于程序的复用性

评分

参与人数 1技术分 +1 收起 理由
狼王 + 1 小痞痞,继续努力哈,谢谢你的解答.

查看全部评分

回复 使用道具 举报
实例化以后都是HashSet类型的对象,第一个在实例化的时候会优先调用父类的构造方法,体现了java的多态特性(动态多态 父类类型=子类对象),第二个则不然

评分

参与人数 1黑马币 +12 收起 理由
狼王 + 12 不错哦,谢谢你的解答

查看全部评分

回复 使用道具 举报
兄弟,你说的是多态啊,多态在工厂模式中常用,可以解耦和,通过用户输入或者配置文件增强序的灵活性无需修改源代码


  1. package cn.itcast.factory;

  2. import java.util.Scanner;

  3. public class EasyFactoryDemo {
  4.         public static void main(String[] args) {
  5.                 Scanner sc = new Scanner(System.in);
  6.                 String style = sc.next();
  7.                
  8.                 Style s = null;
  9.                 s = EasyFactory.getInstance(style);
  10.                 s.show();
  11.                
  12.         }

  13. }

  14. interface Style{
  15.         public abstract void show();
  16.        
  17. }

  18. class WinXP implements Style{

  19.         @Override
  20.         public void show() {
  21.                 System.out.println("XP风格主题");
  22.                
  23.         }
  24. }

  25. class Win7 implements Style{
  26.         @Override
  27.         public void show() {
  28.                 System.out.println("Win7风格主题");
  29.                
  30.         }
  31. }

  32. //为了不修改主程序,增加一个可以根据参数制造所有对象的Factory
  33. class EasyFactory{
  34.         public static Style getInstance(String className){
  35.                 Style s = null;
  36.                 if("xp".equals(className)) s = new WinXP();
  37.                 if("win7".equals(className)) s = new Win7();
  38.                
  39.                 return s;
  40.                
  41.                
  42.         }
  43. }

  44. /**
  45. * 这个只是最简单的工厂模式,工厂模式还可以结合反射和Properties或者xml使用,通过配置文件new不同的对象
  46. * 总之,最基础的东西要学好。
  47. */
复制代码

评分

参与人数 1技术分 +1 收起 理由
狼王 + 1 太棒了,论坛要的就是你这样的人。。。.

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马