generics 相关问题

泛型是一种参数多态,可以在各种语言中找到,包括.NET语言,Java和Swift。

为什么 rust 编译器无法找出在通用模板特化中调用的适当函数?

考虑以下代码: 特征 A {} 结构体 X { p1: i32 } 结构 Y { p1: i32, p2: i32 } 为 X {} 实现 A 为 Y 实现 A {} 结构体 Z 其中 T: A { 数据:T } 实现 Z { fn ...

回答 1 投票 0

为什么无法获取泛型参数的类?

我有一个函数,它接受一个泛型类型的参数,我想访问它的类: 有趣 测试(t:T){ t::类 } 这会失败,并显示“类文字中的表达式为 nulla...

回答 4 投票 0

是否有一个带有索引器返回的协变类型参数的内置通用接口?

在此主题中 如何获取 null 而不是 KeyNotFoundException 通过键访问字典值? 在我自己的答案中,我使用显式接口实现来更改基本字典索引...

回答 2 投票 0

C# 通用方法作为参数传递,参数类型“bool”不可分配给参数类型“System.Func<bool>”

我正在尝试创建一个通用数组迭代器,它迭代一个多维数组,为每个元素分配函数的结果。 当尝试以下代码时,我得到

回答 1 投票 0

C# 通用方法作为参数传递,参数类型“bool”不可分配给参数类型“System.Func<bool>”

我正在尝试创建一个通用数组迭代器,它迭代一个多维数组,为每个元素分配函数的结果。 当尝试以下代码时,我得到

回答 1 投票 0

为什么我们需要在 Swift propertyWrapper 中添加类型注释?

考虑这个@propertyWrapper: @propertyWrapper 结构大写 { varwrappedValue:字符串{ didSet {wrappedValue =wrappedValue.capitalized } } 初始化(wrappedValue:字符串)...

回答 1 投票 0

在这种情况下如何获得类型安全的函数返回值?

在下面的代码示例中,我希望我的 IDE 接受 mySap.rootValues[0].test2 和 mySap.rootValues[1].test4 为有效。现在还没有,因为 rootValues[0] 和 rootValues[1] 的类型是

回答 1 投票 0

带有Map<Class<? extends Event>、List<EventListener<? extends Event>>的EventSource,没有未经检查的调用

我需要使用每个事件类的侦听器列表来实现观察者模式。 我有: 空接口事件 公共接口事件{} 监听器接口: 公共接口事件监听器 我需要使用每个事件类的侦听器列表来实现观察者模式。 我有: 空界面事件 public interface Event {} 听众界面: public interface EventListener<T extends Event> { void handle(T event); Class<T> getEventClass();} 以及事件来源: public class EventSource { private final Map<Class<? extends Event>, List<EventListener<? extends Event>>> listeners = new HashMap<>(); public <T> void subscribe(EventListener<? extends Event> listener) { Class<? extends Event> eventClass = listener.getEventClass(); if (!listeners.containsKey(eventClass)) { listeners.put(eventClass, new ArrayList<>()); } listeners.get(eventClass).add(listener); } public void unsubscribe(EventListener listener) { listeners.remove(listener.getEventClass()); } public void fire(Event event) { for (EventListener listener : listeners.get(event.getClass())) { listener.handle(event); //<-- Unchecked call to 'handle(T)' as a member of raw type... } }} 它有效,但我有“未经检查的呼叫”警告。如何避免? 我尝试过: public void fire(Event event) { for (EventListener<? extends Event> listener : listeners.get(event.getClass())) { listener.handle(event);//<-- compilation error } } 但在这种情况下,我有“句柄无法应用于...”编译错误。 提前致谢! 报告“未经检查的呼叫”警告是有充分理由的 - 您使用了 EventListener 的原始形式。当您给出类型参数 ? extends Event 时,它会给出编译错误,因为编译器不知道 Event 处理哪个 EventListener - 它只知道它是 Event 的特定类型。同样,它不知道 event 的运行时类型 - 它可能是 Event 的任何特定类型。 必须知道类型才能有意义。我会将 EventSource 设为泛型,用有界泛型类型参数指定 Event 的类型。 class EventSource<E extends Event> { 许多 ? extends Event 声明将更改为使用 E,例如 private final Map<Class<? extends Event>, List<EventListener<E>>> listeners = new HashMap<>(); 还有许多其他声明将更改为使用 E。 现在,fire将获取E,以便将其传递给handle: public void fire(E event) { for (EventListener<E> listener : listeners.get(event.getClass())) { listener.handle(event); // Now this compiles } } 改变 listeners.put(eventClass, new ArrayList<>()); 到 listeners.put(eventClass, new ArrayList<EventListener<? extends Event>>()); 我相信这将使接口方法 handle 表现得像预期的那样

回答 2 投票 0

具有供应商函数的 Java 泛型不进行类型检查

我的问题是我想用通用方法比较两个对象 我可以在其中错误处理任何异常的函数。 在代码示例中,我不明白为什么这段代码会编译。

回答 1 投票 0

Java 事件系统通用转换为有界通配符

我正在制作自己的事件系统并尝试使其像这样可用。 EventSystem.get(EventClientStart.class) .setCallback((事件) -> { System.out.println("客户端已启动"...

回答 2 投票 0

Java 事件系统通用转换表达式

我正在制作自己的事件系统并尝试使其像这样可用。 EventSystem.get(EventClientStart.class) .setCallback((事件) -> { System.out.println("客户端已启动"...

回答 1 投票 0

泛型运算符重载,多个抽象类c++

我正在创建一个使用Dimension3作为抽象类的库。 例如: /// rief 表示 3 个维度的抽象类 /// ote 这个类不是直接用的,而是用来...

回答 1 投票 0

如何限制我的模板仅接受具有特定输入和输出类型的 lambda?

受到计算函数泰勒级数的其他问题的启发(原始问题),我编写了一个没有任何约束的模板来成功计算总和。这是当前代码(模板 b...

回答 2 投票 0

无法将派生对象列表隐式转换为泛型 IEnumerable<T>,其中 T 是基类型

我有一个像这样的类型系统 基类{} 类 Derived1 :基类 {} 类 Derived2 :基类 {} 我还有派生类型的集合 我的班级 { 列表 Derived1Collection { 获取...

回答 1 投票 0

编写通用错误处理函数(必须函数)

我知道 Go 将来不会有泛型,并且有一些建议可以用其他结构来替换它们。但通过我下面的例子,我陷入了困境。 func P(任何接口{},错误错误...

回答 4 投票 0

Go:“嵌入类型不能是类型参数”

我正在使用 Go 泛型在“请求-响应”风格的 goroutine 上编写一个类型安全的包装器,并偶然发现了一个编译错误: 类型 WorkerContext[In any, Out any] 接口 { 过程...

回答 1 投票 0

Typescript 类作为扩展另一个类的参数

我对 Typescript 和泛型相当陌生;我一定错过了一些希望微不足道的东西。 我试图传递一个(通用)类作为函数的参数,但这个类是从另一个类扩展的......

回答 1 投票 0

Java 泛型 T 与对象

我想知道以下两个方法声明有什么区别: 公共对象 doSomething(对象 obj) {....} 公共 T doSomething(T t) {....} 有什么事情吗...

回答 9 投票 0

方法的返回类型受到类的类型参数的影响,尽管类型参数没有在任何地方使用。为什么?

在下面的源代码中,为什么方法 WParam.unwrap(…) 的返回类型会受到类型参数 的影响,即使它没有在任何地方使用? 公共类测试类{ 无效测试(){ ...

回答 1 投票 0

使用嵌套字典编写此类条目的最佳、更实用的方法是什么?使用哪种设计模式? C#

数据库中有大量数据,需要使用c#集合来产生统计数据(找到应用程序的每个用户每天每个操作的平均次数)。在我的操作中...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.