问题标签 [parameterized-types]
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.
delphi - Delphi中构造函数约束的用例是什么?
标题差不多就是...
为什么要使用constructor
约束?
class
约束 清楚地暗示了这一点。
如果您单独使用它,您将无法对您创建的东西做任何事情。
为什么它甚至存在?
附加信息:
请注意,在添加“构造函数”约束之前,以下代码不会编译:
cdi - 当 bean 类实现还扩展了某些参数化接口的参数化接口时,CDI bean 类型解析问题
鉴于我缺乏解释问题的词汇,我通过一个重现失败并帮助查找原因的示例来展示它:
第二个块显示了 bean 类的 bean 类型集BeanClass1
,BeanClass2
根据Weld
. 在那里我们发现 bean types set 包含 typeBaseType<T>
而不是BaseType<SomeType1>
or BaseType<SomeType2>
。
所以,记住BeanClass2
的间接接口对应的bean类型有类型变量而不是实际的类型参数。因此,根据本规范的最后一点, a被错误地认为可分配给。BaseType<P>
Weld
T
SomeType2
BeanClass2
BaseType<SomeType1>
这是期望的行为还是错误?有解决方法吗?是否在新Weld
版本中修复。
测试在使用 maven 工件 org.jboss.as:jboss-as-weld:7.1.1 的 JBoss AS 7.1.1 上执行
编辑:我认为这个问题的原因不是第一个答案建议的类型擦除(它已被删除),而是Weld
. 生成 bean 类型所需的所有信息在运行时都可用。我猜这个错误是当Weld
通过反射生成bean类的bean类型时。类型变量解析应该是递归的,显然不是。
我确信生成间接接口的 bean 类型所需的信息在运行时可用,因为我制作并测试了一个使用库完成此任务的方法 - 几年前我为内存高效的 java 序列化程序制作了 - 幸运的是它有一个函数这正是我们需要的:Type
为 java 类的每个祖先生成/获取实例,递归解析类型变量。我试图将涉及的方法放在这里,但粘贴代码时出现格式问题;图书馆很长而且记录不充分的事实让我有理由放弃。
至少,为了说明如何解析间接接口的类型变量的本质,我编写了以下代码。它仅适用于特定类,但可以通过一些努力进行概括:
我希望这避免相信类型擦除是导致此问题的原因。
scala - scala模板函数与forSome
我正在尝试存在类型。
我正在玩一个函数,该函数需要一个序列,其中该序列的元素都是相同的类型。我有..
在哪里 ...
然后我遇到了“forSome”语法,发现我可以用它实现相同的约束。
为了比较,我写了以下内容......
我想了解的是 - 我错过了什么吗?一个签名比另一个签名有什么好处。
一个明显的区别是编译错误是不同的。
java - 在 Java 中将不同的参数化类型存储在同一个泛型数组列表中
我喜欢在 java 中创建数据库表的类表示。列被设计为通用类,以便它可以处理表列可能具有的所有不同数据类型。
一个表有 0 ... n 个 TableColumns,所以我的表类看起来像这样:
这个想法是通过以下方式添加列。
然后我可以通过以下方式操作数据:
但是我目前的实现方式正在失去类型安全性......我的问题是如何实现列,因为列可能会获得不同的数据类型。
有人有线索吗?
scala - 如何对参数化类型(类)进行分组?
给定三个属于一起的类(我试图通过类型参数来表达这一点):
如果有“跨类”调用,我还没有设法定义正确的类型。所以我的问题是:
- 这个问题叫什么名字?
- 如何以类型安全的方式表达它?
d - D中的参数化类型和返回值为什么不起作用?
好的,看来我之前的问题现在已经解决了(我把它留在下面以供参考)。然而,又一个突然出现 - 再次,似乎我错过了一些东西。在这段代码中,我声明了以下内容:
然后在此之后,我声明了这些:
然后,我实现了以下功能:
编译器抗议最近的.left 和最近的.right 不是属性,尽管最近的是二叉树!(T),这似乎很奇怪。我错过了什么?
老问题:
我最近接触了 D,并试图构建一个二叉树实现,以此来测试我通过阅读它所学到的知识。现在,我首先声明如下:
我想这可以让我参数化一些类的东西。进一步来说:
现在,我试着写这个:
之后,编译器大声抱怨我的函数没有返回类型。我在这里做错了什么?如果有助于解释,我来自 Java 背景,并且我在 Xamarin Studio 中使用 dmd 编译器。
scala - Scala Def Macros - How do I get the parameterized type member of a symbol?
I'm trying to get the parameterized type of a member on a symbol in a MACRO context. I only have a symbol available (can't use weakTypeOf[List[Blah]]) because I am iterating over a bunch of classes.
returns...
How do I get IWantThis Type object???
I've tried:
I've tried extraction:
Keep in mind, I am using the 2.10.2 macro plugin.
scala - 如何描述和修复这个 Scala 类型不匹配错误?
下面是我有时在使用参数化类型时遇到的一种情况的具体实例。基本上,我知道有些类型参数是兼容的,但我不知道如何向代码的某些部分证明这一点。
我正在编写一个将 url 映射到处理函数的请求路由器。下面是一些简化的代码。我创建了一个List[Route]
,其中 aRoute
基本上是UrlMatcher, Function
一对。
type 参数A
用于匹配器可能从 URL 中提取的“参数”。它们将被传递给处理函数。例如,UrlMatcher[Int]
看到像“/users/123”这样的 URL 路径的 a 可以将 123 传递给getUser(id: Int)
函数。路由器可能如下所示:
问题是我得到类型不匹配错误,因为我不知道如何告诉它这两种类型是相同的。
我知道我可以重新设计它,使其Route
具有类似的方法matchAndCall
,但如果可能的话,我想保持这种逻辑流程。
更新/编辑
我不完全理解存在类型,但我试过这个......
它消除了上面的不匹配错误。但是,我还有另一个插入到ArrayBuffer
.
现在错误是...
为什么P
不兼容T
,既然对它们没有约束T
?
java - 使用 Java 的参数化类型和多态性处理此通用编程场景的方法
假设我有一个界面:
以及实现该接口的对象:
我希望有一个通用函数,它以Map<Id, Foo>
.
我还希望将成员变量private Map<Integer, Bar> barMap
设置为此映射的返回值。
以下:
是合法的。
但
是非法的,因为我无法从 转换Map<Integer, Foo>
为Map<Integer, Bar>
。我也不能将前者投给后者。
我将如何做到这一点?
java - java java.util.List接口中不同参数类型的含义
和有什么区别
public List<?> myList;
和
public List<String> myList;
我知道后者将存储一个List
myList 对象(字符串),但不确定第一个做什么。我的猜测是它将接受任何对象type
。但这安全吗?