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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘芮铭 中级黑马   /  2012-8-26 12:42  /  2512 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘芮铭 于 2012-8-28 11:32 编辑

import java.util.*;
class MyStringComparator implements Comparator //我的问题1:实现一个接口的类上面能否加上泛型?
{
public int compare(Object obj1,Object obj2) //问题2:覆盖接口里面的方法上面可否加上泛型?如果能加泛型!需要覆盖的方法需要传入Object类型,会产生类型不匹配!
{
  String s1 = (String)obj1;
  String s2 = (String)obj2;
  
  int num = new Integer(s1.length()).compareTo(new Integer(s2.length()));
  if(num==0)
   return s1.compareTo(s2);

  return num;

}
}
class  TreeSetTest
{
public static void main(String[] args)
{
  TreeSet<String> ts = new TreeSet<String>(new MyStringComparator());
  ts.add("abc");
  ts.add("dbc");
  ts.add("bcde");
  ts.add("cdfrg");
  ts.add("dasfdf");

  for(String str : ts)
  {
   System.out.println(str);
  }
}
}


7 个回复

倒序浏览
肿么没人回答啊。。。
回复 使用道具 举报
应该是可以加的。接口其实是更抽象的类,一个java类实现了接口,后面自己还是一个java类。java类上是可以加泛型的。类里面的方法没必要加泛型,毕竟接口中人家已经定义好了。
回复 使用道具 举报
泛型的定义方式
                A:泛型定义在类上
                        class Demo<QQ>
                        {
                                public void show(QQ qq){}
                        }

                B:泛型定义在方法上
                        class Demo
                        {
                                public <BM> void show(BM bm){}
                        }

                C:泛型定义在接口上
                        interface Inter<QQ>
                        {
                                public abstrace void show(QQ qq);
                        }
回复 使用道具 举报
方志亮 发表于 2012-8-26 16:43
泛型的定义方式
                A:泛型定义在类上
                        class Demo

你没搞清楚我的问题吧  我问的是特定时候能不能加?
回复 使用道具 举报
本帖最后由 方志亮 于 2012-8-26 17:58 编辑

后边不是有泛型吗  不是告诉你泛型都可以加在什么地方了吗


因为Object中没有那些String特有的方法  所以会出现不匹配

评分

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

查看全部评分

回复 使用道具 举报
方志亮 发表于 2012-8-26 17:56
后边不是有泛型吗  不是告诉你泛型都可以加在什么地方了吗

那怎么解决呢?
回复 使用道具 举报
刘芮铭 发表于 2012-8-26 18:36
那怎么解决呢?

直接加不就完了吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马