多态和泛型有关系么

2019-03-25 13:50|来源: 网路

可以这样理解么:泛型是针对方法和类的
而多态是针对对象的

相关问答

更多
  • 你应该使用三个重载的方法,第三个应该使用一个string而不是一个object 。 原因: 这三种重载使得客户开发人员很清楚该方法接受哪种数据。 通过添加更多重载来扩展功能比较容易,而不会打破对客户端代码中方法的现有调用。 当客户开发人员意外传递他们不想要的东西时,您当前的实现很容易导致错误。 由于参数是object ,因此编译器无法检查类型的正确性。 最好在客户端部分需要一个明确的.ToString()来明确表明这是正在做的事情。 You should use three overloaded metho ...
  • 简短的回答是,你做不到。 C ++是一种静态类型的语言。 这意味着函数的类型或方法的返回值是在编译时声明的,而不是在运行时声明的。 其他语言,例如Perl,是动态类型的。 Perl函数有时可以返回标量值,如整数。 其他时候它可以返回引用(指针),列表或散列(std :: vector或std :: map)。 但是C ++不能这样工作。 因此,如果您需要编写动态类型的代码,则需要使用除C ++之外的其他语言。 在C ++中你唯一可以做的就是将这个函数声明为返回一些可以转换为任何一个的类型。 例如: clas ...
  • 分配 Collection myCol = null; myCol = child.createList(); 将失败,因为您正在将Collection分配给使用未知类型T参数化的Collection ,该类可能是也可能不是ClassChild1 。 您已在呼叫站点处指定T作为推断,因此请设想以下代码: Class1 c1; Collection c = c1.doSth(); 您可以看到,如果编译器允许您编译这样的doSth方法,编译器会将自己 ...
  • 如果你看一下实例类的定义: class KeyValuePairParser : KeyValuePairParserBase> 你会看到你只有2个类型参数:TKey和TValue 但是场 private KeyValuePairParserBase Parser {get;set;} 定义了三个类型参数:TKey,TValue和TS ...
  • 下面的方法将递归地挖掘一个Object并返回一个包含它找到的第一个Integer Optional.empty()如果找不到,则返回Optional.empty() 。 static Optional firstInt(Object o) { if (o instanceof Integer) return Optional.of((Integer) o); if (o instanceof int[]) { int[] array = (i ...
  • 以这种方式定义抽象方法(注意?而不是T ): public abstract EntryDAO getEntryDAO(); //should work for you 我按照我理解的方式重新创建了场景: 将subclass1作为interface1 例如,这很好用: public static List dostuff1() { return new Array ...
  • 你没有说出#2中的错误是什么,但我敢打赌它告诉你它需要一个构造函数约束。 添加一个它应该工作。 You don't say what the error in #2 is, but I'll bet it tells you it requires a constructor constraint. Add one and it should work.
  • 嗯,不,你展示的代码工作得很好。 问题必须在于如何在搜索方法中使用IEnumerable - 记住,因为它是Func的返回值,它必须是协变的。 实际可编辑的代码段: void Main() { var enumerable = default(IEnumerable); Search(enumerable, i => i.MyEnumerable); Search(enumerable, i => i.MyCollection); } public st ...
  • 是的,使用Resty的泛型不应该有问题。 你将不得不玩杰克逊注释一点,以使他们正确的继承。 主要是@JsonSubTypes和@JsonTypeName 。 请记住,您必须自己或多或少地处理错误处理。 有更多的代码来让其他应用程序工作比rf,但恕我直言,它使你的API更容易移植更多的平台类型。 这是你要问的一个例子。 我经常使用单元测试来解决一些边缘情况。 https://github.com/resty-gwt/resty-gwt/blob/master/restygwt/src/test/java/or ...
  • 是的,泛型是参数多态的一种形式。 Yes, generics are a form of parametric polymorphism.