黑马程序员技术交流社区

标题: 泛型接口 [打印本页]

作者: qiucheng1990    时间: 2012-11-1 20:18
标题: 泛型接口
接口使用泛型定义的时候,子类实现这个接口时如果也要定义泛型类,这两个泛型必须一致吗
作者: 李计伟    时间: 2012-11-1 21:22
子类实现这个接口时它的类型参数必须和要实现的接口中的声明完全一样
通常,如果一个类实现了一个泛型接口,则此类也是泛型类。否则,它无法接受传递给接口的类型参数。
class MyClass<这里必须和接口的类型一样>implements MinMax<T>

作者: qiucheng1990    时间: 2012-11-1 21:57
李计伟 发表于 2012-11-1 21:22
子类实现这个接口时它的类型参数必须和要实现的接口中的声明完全一样
通常,如果一个类实现了一个泛型接口 ...

哦哦,学习了!感谢你啊
作者: 付维翔    时间: 2012-11-1 22:16
我不赞同坐在沙发上的那个同学的观点,啥也不说,直接下代码:
首先是一个接口并使用型

  1. <P>public interface TestDao<T extends Serializable> {
  2. public Class<T> sayMyT();</P>
  3. <P>}</P>
复制代码
然后一个类承接此接口,指定实现接口时所用的类型为String,并且在产生一个 TestDaoAbs时,我注入了一个User对象类型

  1. <P>public class TestDaoAbs<E> implements TestDao<String> {</P>
  2. <P> @Override
  3. public Class<String> sayMyT() {
  4.   // TODO Auto-generated method stub
  5.   return String.class;
  6. }</P>
  7. <P> public static void main(String[] args) {
  8.   Class c = new TestDaoAbs<User>().sayMyT();
  9.   System.out.println(c.toString());
  10. }</P>
  11. <P>}</P>
复制代码
本人拙见,如有错误请指正,再贴一个简单易明的:

作者: 马振兴    时间: 2012-11-2 21:00
沙发有误。
  1. interface Inter<T>{
  2.         void show(T t);
  3. }

  4. //子类中定义未知数据类型的泛型
  5. /*class InterImpl<T> implements Inter<T>{
  6.         public void show(T t)
  7.         {
  8.                 System.out.println("show:"+ t);
  9.         }
  10. }*/


  11. //子类中定义的已知数据类型的泛型
  12. class InterImpl implements Inter<String>{
  13.         public void show(String s)
  14.         {
  15.                 System.out.println("show:"+s);
  16.         }
  17. }       
  18. public class GenericDemo4 {

  19.         /**
  20.          * @param args
  21.          */
  22.         public static void main(String[] args) {
  23.                 // TODO Auto-generated method stub
  24.                 InterImpl  i = new InterImpl ();
  25.                 i.show("haha");
  26.         }

  27. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2