问题标签 [nested-generics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
149 浏览

java - 具有另一个泛型类作为参数的泛型类

我发现自己在使用泛型时遇到了一种奇怪的情况,到目前为止这似乎是不可能的。我尝试在简单的类中隔离这种情况。我试图完成的是:一个调度句柄来处理数据包的服务类。每个处理程序都有一个数据包类型参数,因为每个数据包都应该有一个处理程序。服务类也有一个 Handler 类型参数,因为有几种类型的处理程序,因此不同的处理程序类型需要几个服务。这个描述可能不是很清楚,所以这里是我做的例子:

有没有办法完成这样的事情,或者有什么建议?谢谢

编辑:这是来自 manouti 答案的修改后的代码(注意:为了清楚起见,我将 SomePacket 更改为 PacketOne)。我遇到的问题是创建 ServiceImpl 的实例。

0 投票
1 回答
67 浏览

c# - 为什么这个泛型类没有选择泛型方法提供的类型?

考虑以下静态泛型方法:

我可以像下面这样简单地调用它,并且 T 将被暗示为Button来自传入的参数:

但是,对于以下泛型类...

此代码不会编译。

相反,我必须像这样显式地提供类型。

我认为T提供的论点会暗示,但似乎并非如此。

我怀疑原因是因为没有类Laa——该类实际上是——Laa<Button>所以它不知道要构造什么,但这只是一个猜测。

即便如此,编译器是否没有足够的信息来解决这个问题?没有类Laa,但有一个泛型Laa<T>可以满足提供的参数。

0 投票
0 回答
158 浏览

c# - c#中如何动态选择要调用的泛型函数的类型

在 C# 中,我有一些通用函数。我有一个动态对象列表,我想用它调用正确类型的函数
它在简单的情况下工作,但一旦嵌套模板就不会编译。
如何使其在嵌套模板案例中工作?

0 投票
2 回答
154 浏览

java - Java - 使用类型参数初始化类的问题

我在使用类型参数初始化类时遇到问题。这似乎是 Java 类型推断的一个缺点,我想知道是否有解决方法或更好的方法来实现这一点。

编译时错误在BusinessLogic::someLogic()

构造函数 Service<ChildModel, ArrayList<ChildModel>>(Class<ChildModel>, Class<ArrayList>) 未定义

编译为 Java 7。

0 投票
1 回答
38 浏览

java - 嵌套通配符泛型变量影响

给定以下 Java 代码:

Test类的主要方法中,将接收结果的变量的正确类型是f.construct()什么?这种类型应该类似于我正在寻找的A<B<...>>地方。...

上面有 3 行注释的代码代表了我解决这个问题的尝试。第一行和第二行无效。第三个是,但我丢失了B类型信息,我必须强制转换a.getT()

0 投票
2 回答
1731 浏览

java - Java - 将类扩展为接口/抽象方法的返回类型

我试图找到一种方法来创建一个接口/抽象方法,并将声明/扩展类作为返回类型。(例如classA 扩展了interfaceA,并且该方法应该返回一个ClassA 对象)。

现在我发现一些帖子编译器不会抱怨这样的事情,但是 JVM 无法处理这样的事情,这意味着这个机制在 java 中不存在。

所以我想出了以下想法,我不知道它在技术上是否足够节省。(例如它会导致循环)

这意味着您可以以这种方式使用它。虽然这不会强制外部用户使用扩展类,但如果愿意,它至少提供了这样做的机会:

现在这不会产生编译器或运行时错误,但我担心如果广泛使用这是否会产生任何问题。

如果有人能确认这会或不会导致问题,我将不胜感激。(也欢迎任何其他反馈)。

0 投票
1 回答
423 浏览

swift - Swift 中的嵌套泛型

简单地说,我有一个泛型类Class1<X:Class2<Y>>,据我所知,Swift 迫使我Y在声明中对类型进行硬编码Class1,但我需要YX.

长版

我有一个泛型类 DataSource<T:GenericItem>,它不是由非泛型实现(如ItemsDataSource:DataSource<Item>)子类化的。

现在我想创建一个通用控制器,它可以与我的 generic 的子类一起使用DataSource

所以我像这样声明控制器TableViewController<DS:GenericDataSource<GenericItem>>,但在这种情况下,我无法使用作为它自己参数DataSource的子类的参数对其进行子类GenericItem化(即我不能声明SuperTableViewController<ItemsDataSource>,因为ItemsDataSource具有Item通用参数而不是其父参数GenericItem)。

知道如何创建这样的通用控制器吗?

0 投票
2 回答
633 浏览

swift - Swift nested generics type does not conform to protocol

I have a Response class contain a value, and I also have a Value class contain data which conform to Mappable protocol.

Now I have a function to handle Response object, but while I try to get the data out from Value object, it show Type "R" does not conform to protocol.

This is my code in playground:

Update

Am I doing it right? Or any other way to achieve this. Thanks

0 投票
2 回答
222 浏览

c# - c# 中的函数式编程:如何嵌套 using 语句并允许代码块修改返回的数据?

我正在研究 c# 中的函数式编程,这样我就可以减少代码中的副作用数量,并使测试更容易并泛化我的代码,从而使重构变得更容易。但是,我在弄清楚如何using使用通用 using 块嵌套语句时遇到问题。考虑以下:

我使用以下代码示例调用此代码:

我将这个修改后的using语句的输出传递给管道中的另一个方法。

然而,我确实遇到了一个警告,我被卡住了。

如果我想使用嵌套的 using 语句,但对我想要传递的返回项进行修改怎么办?

Disposable通过重用我上面存根的类来考虑以下内容:

此代码有效...但是,如果我想更改symmetricKey's加密模式怎么办?

以下不起作用:

我能做些什么来允许修改通过Disposable.Using我上面创建的通用方法传递的变量?

0 投票
2 回答
1697 浏览

java - 如何使用类标记保持嵌套泛型的泛型类型

Java 中解决类型擦除的标准方法是将类标记传递给构造函数。例如,我们可以像这样定义一个通用属性类:

但是,如果我现在想使用另一个泛型类型参数(例如列表)并保留其泛型类型怎么办。我本来希望这样做:

但是当然super(ArrayList<J>.class)不会编译,super(ArrayList.class). 解决这个问题的最佳方法是什么?