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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 湛添友 中级黑马   /  2014-4-13 09:14  /  1118 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

返回值是Collection   这不是个接口吗? 怎么可以实例化呢?

4 个回复

倒序浏览
额,通过接口操作子类,楼主不知道父类引用可以指向子类吗,虽然返回值是Collection,但是是向上转型了,其实际类型可能是Collection接口的一个具体子类型,返回值设置为接口是为了通用型,楼主可以试一下,将一个Collection的子类当成Collection返回,在用Collection引用调用Collection接口中的方法

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
  1. public class InnerClass {

  2.         public static  void  main(String[] args) throws IOException {
  3.    test t=new my().td();
  4.    t.show();
  5.         }
  6. }
  7. interface test{
  8.         void show();               
  9. }
  10. class my{
  11.         test td(){
  12.                 return new test() {               
  13.                         @Override
  14.                         public void show() {
  15.                                 System.out.println("this is a test");                               
  16.                         }
  17.                 };               
  18.         }       
  19. }
复制代码

这是示例代码,可以看到,可以通过接口引用调用接口中的方法
回复 使用道具 举报
yanzhendong 发表于 2014-4-13 09:34
额,通过接口操作子类,楼主不知道父类引用可以指向子类吗,虽然返回值是Collection,但是是向上转型了,其 ...

HashMap<String,String> m=new HashMap<String,String>();
Collection<String> c=m.values();
总感觉是这个意思  Collection<String> c=new Collection<String> ();  这是不允许的吧?
   我纠结于这个  c    到底是哪个?
回复 使用道具 举报
不可以实例化呀  使用它的子类来实例化的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马