generics相关内容

IList<T>并列出<T>接口转换

我大致了解接口、继承和多态,但有一件事让我感到困惑. 在这个例子中,Cat 实现了 IAnimal,当然 List 实现了 IList: IList猫=新列表(); 但它会产生编译错误(无法隐式转换类型...).如果我使用 Cat 继承的抽象超类 [Animal],它也将不起作用.但是,如果我将 IAnimal 替换为 Cat: IList猫=新列表(); 它编译得很好. ..
发布时间:2022-01-24 16:36:35 C#/.NET

如何将 Class 作为参数传递并在 Java 中返回泛型集合?

我正在为我的 Java 应用程序设计一个简单的数据访问对象.我有一些类(记录)代表表中的单行,例如 User 和 Fruit. 我想要一个方法来获取特定类型的所有记录. 暂时我是这样的: 公开列表获取所有用户(){...}公开列表getAllFruits() {...}…… 但我想要一个像这样的单一多态方法(错误): 公开名单getAllRecords(类类 ..
发布时间:2022-01-24 16:29:19 Java开发

C# 泛型和多态性:矛盾吗?

我只是想确认一下我对 C# 中的泛型的理解.这出现在我工作过的几个代码库中,其中通用基类用于创建类型安全的派生实例.我所说的一个非常简单的例子, 公共类 SomeClass;{公共虚拟 void SomeMethod(){ }}公共类 DeriveFrom :SomeClass{公共覆盖无效 SomeMethod(){base.SomeMethod();}} 当我想以多态方式使 ..
发布时间:2022-01-24 16:22:23 C#/.NET

多态 Scala 返回类型

我有一个抽象的 Scala 类 Base,它有子类 Derived1 和 Derived2.Base 定义了一个函数 f(),它返回一个与其实现类相同类型的对象.所以 Derived1.f() 返回 Derived1 并且 Derived2.f() 返回 Derived2.如何在 Scala 中编写此代码? 这是我到目前为止的想法. 包com.github.wpm.cancan抽象类基{d ..
发布时间:2022-01-24 16:19:52 其他开发

Scala:“结构细化中的参数类型可能不是指在该细化之外定义的抽象类型";

我在使用 scala 泛型时遇到问题.虽然我在这里定义的第一个函数似乎完全没问题,但编译器抱怨第二个定义: 错误:结构细化中的参数类型可能不引用在该细化之外定义的抽象类型def >>[B](a: C[B])(隐式 m: Monad[C]): C[B] = {^ 我在这里做错了什么? trait Lifter[C[_]] {隐式 def liftToMonad[A](c: C[A]) = n ..
发布时间:2022-01-24 16:16:41 其他开发

是否可以将 Swift 泛型类函数返回类型限制为同一个类或子类?

我正在 Swift 中扩展一个基类(我无法控制).我想提供一个类函数来创建一个子类类型的实例.需要一个通用函数.但是,像下面这样的实现不会返回预期的子类类型. 类计算器{func showKind() { println("常规") }}类科学计算器:计算器{让模型:字符串=“HP-15C"覆盖 func showKind() { println("scientific") }}扩展计算器 {c ..
发布时间:2022-01-24 16:14:39 移动开发

Java 泛型参数绑定到任何类型的范围

是否有将泛型类型参数限制为任何类型范围的语法或解决方法? 我知道您可以将一个类型限制为 all 的一系列类型(即 AND 逻辑): public class MyClass;&可序列化>{ }//合法语法 是否有OR逻辑版本,即类似这样的: public class MyClass;|可序列化>{ }//非法语法 如果没有支持这一点的语法(我不认为有),是否有一种很好的解决方法或方法 ..
发布时间:2022-01-24 16:14:22 Java开发

为什么多态性不以相同的方式对待泛型集合和普通数组?

假设 Dog 类扩展了 Animal 类:为什么不允许这种多态语句: 列表myList = new ArrayList(); 但是,它允许使用普通数组: Animal[] x=new Dog[3]; 解决方案 之所以会这样,是基于Java实现泛型的方式. 数组示例 使用数组,您可以做到这一点(数组是协变的,正如其他人所解释的) Integer[] myIn ..
发布时间:2022-01-24 16:11:39 Java开发

C#泛型是如何实现的?

我曾认为 C# 中的泛型是这样实现的,即在运行时或编译时生成一个新的类/方法/what-have-you,当使用新的泛型类型时,类似于 C++ 模板(我从未真正研究过,我很可能是错的,对此我很乐意接受更正). 但在我的编码中,我想出了一个确切的反例: 静态类程序{静态无效主要(){测试 testVar = new Test();通用测试genericTest = new Gener ..
发布时间:2022-01-24 16:08:18 C#/.NET

Java中的高级泛型

假设我有以下课程: 公共类 FixExpr {Expr在;} 现在我想介绍一个通用参数,对 Expr 的使用进行抽象: public class Fix{F>在;} 但 Eclipse 不喜欢这样: 类型 F 不是泛型的;它不能用参数 > 这是否可能,或者我是否忽略了导致此特定实例中断的某些内容? 一些背景信息:在 Haskel ..
发布时间:2022-01-24 16:01:59 Java开发

如何在 C# 中对开放类型进行泛型多态性?

我有一个类似的界面: interface IFoo;{...} 并且我希望拥有这些类的集合不为所有集合元素强制使用特定的通用参数,例如: 类 IFooCollection {列出>_项目;public IFooCollection(列出 解决方案 既然你不想强制一个特定的类型,那就做一个abstract class或者一个interface这样: interface I ..
发布时间:2022-01-24 15:56:11 C#/.NET

Java-<T extends Comparable<T>>的含义?

完整的上下文是: public class RClass> 我是否正确地说,标题中的陈述意味着插入方法的参数必须是实现 Comparable 的类的对象或其派生类之一? 谢谢. 解决方案 这意味着类型参数必须支持通过 Comparable 接口与自己类型的其他实例进行比较. Oracle 教程Object Ordering 中提供了此类类的示例.请注意以下摘录中与 T ex ..
发布时间:2022-01-24 15:55:12 Java开发

是列表<狗>List<Animal> 的子类?为什么 Java 泛型不是隐式多态的?

我对 Java 泛型如何处理继承/多态感到有些困惑. 假设以下层次结构 - 动物(父母) 狗 - 猫(儿童) 所以假设我有一个方法doSomething(Listanimals).根据继承和多态性的所有规则,我会假设 List is 一个 List 和一个 List is List - 所以任何一个都可以传递给这个方法.不是这样.如果我想 ..
发布时间:2022-01-24 15:45:03 Java开发

泛型迭代器

我正在尝试找到一种访问一组容器的通用方法.除了另一个自定义列表之外,我还有一个标准向量和列表. 自定义列表定义了一个迭代器; class Iterator: public std::iterator;{//...}迭代器开始(){返回(迭代器(根));}迭代器 end() {返回(迭代器(NULL));} 适当的运算符重载. 理想情况下,我愿意这样做; 类 Foo {上市:富() ..
发布时间:2022-01-24 11:29:27 C/C++开发

如何在 Julia 中使用开放式类型编写 Trait?

这是为了简化我提出的问题的一部分 这里: 我想编写一些代码,保证在满足特定条件的类型上工作.假设今天我写了一些代码: 不可变示例随便::ASCIIString结尾函数 step_one(x::Example)长度(x.whatever)结尾函数 step_two(x::Int64)(x * 2.5)::Float64结尾函数 combine_two_steps{X}(x::X)中间 = s ..
发布时间:2022-01-23 19:41:10 其他开发

c#中递归泛型类型的问题

我有一些 C# 代码在 mono 和 Microsoft 的 .net 编译器下都能正常编译,但只能在 mono 上运行.错误信息是(我添加的换行符) 未处理的异常:System.TypeLoadException:无法加载类型“Hasse.Groups.Heavy.Product.PowerGroup`1"来自程序集“Hasse,版本=1.0.x.y,文化=中性,PublicKeyToken= ..
发布时间:2022-01-23 15:24:05 C#/.NET

C#:通用方法不调用特定方法重载

我正在尝试在 C# 中创建一个泛型方法,它将根据其主体中的参数数据类型调用不同的方法,然后处理它们的结果.我试图通过创建一个通用包装器方法来实现这一点,然后提供处理方法的几个重载 - 包括一个通用的,如果没有特定的重载可用. 当我直接调用处理方法时,正确选择了适当的版本.但是,当我从包装器方法调用它时,它总是选择通用的,即使我传递给它的特定数据类型存在匹配的重载. 有什么方法可以调整代 ..
发布时间:2022-01-23 15:04:10 C#/.NET