Java 通配符泛型例子

Bertha 。 2021-12-16 11:13 488阅读 0赞

请看下面的代码,其中会发生错误的代码已经注释掉,并且写明了错误类型

总体来说,泛型通配符就是为了支持多态时父子类,接口扩展类之间的相互转换而生

  1. package test;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. public class GenericTester {
  5. public static void main(String[] args){
  6. GenericTester genericTester=new GenericTester();
  7. List<TestA> list=new ArrayList<GenericTester.TestA>();
  8. GenericTester.TestA tester=genericTester.new TestA();
  9. list.add(tester);
  10. TryGeneric1(list);
  11. TryGeneric2(list);
  12. // TryGeneric3(list); has compile error
  13. // TryGeneric4(list); has compile error
  14. }
  15. private interface ITest{
  16. public void Test();
  17. }
  18. private class TestA implements ITest{
  19. @Override
  20. public void Test() {
  21. // TODO Auto-generated method stub
  22. System.out.println("TestA");
  23. }
  24. }
  25. private static void TryGeneric1(List<? extends ITest> testList){
  26. for(ITest tester:testList){
  27. tester.Test();
  28. }
  29. }
  30. private static void TryGeneric2(List<?> testList){
  31. // for(ITest tester:testList) // cause error
  32. for(Object tester:testList){
  33. ((ITest)tester).Test();
  34. }
  35. }
  36. private static void TryGeneric3(List<ITest> testList){
  37. for(ITest tester:testList){
  38. ((ITest)tester).Test();
  39. }
  40. }
  41. private static void TryGeneric4(List<Object> testList){
  42. for(Object tester:testList){
  43. ((ITest)tester).Test();
  44. }

转载于:https://www.cnblogs.com/vanpan/archive/2012/08/18/3583042.html

发表评论

表情:
评论列表 (有 0 条评论,488人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java通配符

    Java泛型是一种强类型约束机制,可以在编译时检查类型安全,防止类型转换错误。通配符是Java泛型的一个重要特性,可以帮助我们更灵活地使用泛型。 什么是泛型通配符? 泛

    相关 通配符

    > 在看Java核心技术卷I中泛型通配符相关的知识时产生了很多疑问,通过了解后简单的做下笔记方便回顾。 > 本文重点记录了一下这几个问题: > > 为什么要用泛型通

    相关 Java 通配符例子

    请看下面的代码,其中会发生错误的代码已经注释掉,并且写明了错误类型 总体来说,泛型通配符就是为了支持多态时父子类,接口扩展类之间的相互转换而生 packa