如何在 C # 中捕获通用异常的所有变体

我想捕捉一个通用异常类的所有变体,我想知道是否有办法做到这一点,没有多个 catch 块。例如说我有一个异常类: 公共类 MyException: Exception { 公共字符串 MyProperty {get;} 公共 MyException (T prop): base (prop.ToString ()) { MyProperty = prop?。ToString (); } } 和两个派生类: 公共类 MyDerivedStringException: MyException { 公共 MyDerivedStringException (字符串道具): base (道具) { } } 公共类 MyDerivedIntException: MyException { 公共 MyDerivedIntException (int prop): base (prop) { } } 有没有办法既抓住MyDerivedStringException and MyDerivedIntException在一个捕获块。 我试过了: 试试 { ... } 当 (e 是 MyDerivedSt ……

共5个回答,已解决, 标签: c# generics exception
ClassCastException 在 Java 8 中使用 varargs-为什么?

下面的代码工作正常m2() but is throwing a ClassCastException when I use m1()。 之间唯一的区别m1 and m2是参数的数量。 公共类测试 { 公共静态无效 m1 () { M3 (m4 (“1”)); } 公共静态空隙 m2 () { M3 (m4 (“1”),m4 (“2”)); } 公共静态 void m3 (对象.str) { 对于 (对象 o: str) { 系统输出打印 (o); } } 公共静态 T m4 (对象 s) { 返回 (T) s; } 公共静态 void main (字符串 [] args) { M1 (); } } 当我们使用泛型时,varargs 不使用单个参数吗? PS: 这与使用泛型和 Varargs 的 ClassCastException [https://stackoverflow.com/questions/50333155/classcastexception-using-generics-and-varargs] ……

共4个回答,已解决, 标签: java generics exception java-8
为什么集合不被简单地视为集合<??>

请考虑从 shiiro 的 org.apache.shiro.subject.PrincipalCollection [https://shiro.apache.org/static/1.4.0/apidocs/org/apache/shiro/subject/PrincipalCollection.html#fromRealm-java.lang.String-] 接口中获取的以下 api 方法, 但可能也存在于其他库中: Collection fromRealm(String realmName); 是的, 即使现在仍然有库使用原始类型, 可能是为了保持前 Java 1.5 兼容性?! 如果我现在想将此方法与流或选项一起使用, 如下所示: principals.fromRealm(realmName).stream().collect(Collectors.toSet()); 我收到一个关于未检查的转换和使用原始类型的警告, 我应该更喜欢使用参数化类型。 Eclipse: > 类型安全: 收集方法 (收集器) 属于原始类型流。对泛型类型流的引用应参数化 贾瓦克: > 注意: gen ……

共4个回答,已解决, 标签: java generics
为什么选项. map 使这项任务有效?

Optional> option = Optional.of(new ArrayList<>()); Optional> doesntWork = option; Optional> works = option.map(list -> list); 第一个尝试的赋值不编译, 但第二个赋值 map 与此编译。感觉其实 map 不应该完成任何事情, 但不知什么原因, 它把我 Optional> 变成了 Optional> 一个。是否有某种含蓄的演员阵容在进行? ……

共4个回答,已解决, 标签: java generics java-8 optional
使用本地类时实例的非法泛型类型

我有下面使用本地类的 java 代码 import java.util.Arrays; public class X { void m() { class Z {} for (Object o : Arrays.asList(1, 2, 3)) if (o instanceof Z) {} } } 它不会编译与以下错误消息: X.java:8: error: illegal generic type for instanceof if (o instanceof Z) {} ^ 1 error 我知道本地类 Z 继承的泛型类型签名 X , 它是一个内部类。本示例中出现了相同类型的编译错误, 其中 Z 不是本地错误, 但仍然是内部错误: import java.util.Arrays; public class X { class Z {} void m() { for (Object o : Arrays ……

共4个回答,已解决, 标签: java generics local-class
T 的使用扩展了 U?

最近,我遇到了一个类似这样定义的方法,我不完全理解它的用法: 公共静态 T foo (U u) {.} 使用示例可以是这样的: //Baz 只是 foo () 的包含类 编号 n = Baz.foo (1); 哪里T被推断为号码和U(可能) 到整数。但是,当这优于例如这种方法定义时,我无法回过神来: 公共静态 T 吧 (T t) {.} 如果我这样称呼它: 酒吧 (2) 号 n = Baz; 代码仍然有效。T被推断为号码或者整数(在这个例子中,不知道参数类型整数比呼叫站点返回类型更受欢迎号码) 这些问题我都看过了:1 [https://stackoverflow.com/questions/39984548/generics-parameter-extends-another-parameter-on-java-method] , 2 [https://stackoverflow.com/questions/15491058/meaning-of-t-u-extends-t-in-java-function-declaration] 但是我仍然不知道第一个有两个参数的方法是否比第二个 ……

共4个回答,已解决, 标签: java generics
数组<int>列表与 arraylist<int[]>?</int[]> </int>

我无法找出为什么不 允许使用 arraylist <int> 但允许在>< arraylist. 我的印象是, 在集合中不允许使用原始数据类型, 那么为什么这是合法的呢? ……

共4个回答,已解决, 标签: java generics collections reference primitive-types
C # 泛型方法选择

我试图在 C # 中编写通用算法,可以使用不同维度的几何实体。 在以下人为的例子中Point2 and Point3, both implementing a simple IPoint接口。 现在我有一个功能GenericAlgorithm that calls a function GetDim. There are multiple definitions of this function based on the type. There is also a fall-back function that is defined for anything that implements IPoint。 我最初预计以下程序的输出是 2,3。然而,它是 0,0。 接口 IPoint { 公共 int NumDims {get;} } 公共结构点 2: IPoint { 公共 int NumDims => 2; } 公共结构 Point3: IPoint { 公共 int NumDims => 3; } 分类程序 { 静态 int GetDim (T 点),其中 T: ipot => 0; 静态 ……

共4个回答,已解决, 标签: c# generics
为什么在编译时不检查 lambda 返回类型

使用的方法引用具有 returntype 整数。但是在下面的示例中允许不兼容的字符串。如何修复方法 “with” 声明以获得方法引用类型安全,而无需手动转换? 导入 java.util.function.Function; 公共类最小示例 { 静态公共类生成器 { 最后一班 clazz; 建设者 (类 clazz) { 这个。clazz = clazz; } (类 clazz) {的静态生成器 返回新的建设者 (clazz); } 具有 (函数 getter,R returnValue) {的生成器 返回 null;//TODO } } 静态公共接口 MyInterface { 整数 getLength (); } 公共静态 void main (字符串 [] args) { 缺少 compiletimecheck 是不可接受的: (MyInterface.class) 的生成器。与 (MyInterface:: getLength,“我不是整数”); //编译时间错误 OK: 使用 ((函数) MyInterface:: getLength,“我不是整数”); //类型 MinimalEx ……

共4个回答,已解决, 标签: java generics lambda type-inference method-reference
类型映射时的泛型属性问题

我有一个导出类似以下实用类型的库: 类型 Action = (数据: State) => State; 此实用程序类型允许您声明一个将作为 “操作” 执行的函数。它收到一个通用的参数Model该行动将对其不利。 的data然后用我导出的另一个实用程序类型键入 “action” 的参数; 类型状态 = 省略>>; 的State utility type basically takes the incoming Model generic and then creates a new type where all the properties that are of type Action已被移除。 例如,这里是上述的基本用户土地实施; 接口 MyModel { 计数器: 数字; 增量: 动作; } Const myModel = { 计数器: 0, 增量 :( 数据) => { Data.counter;//存在并键入为 “编号” 数据。增量;//不存在,因为状态实用程序删除了 返回数据; } } 上面的工作非常好。 然而,有一种情况,我正在努力,特别是当定义了一个通用模型定义,以及一 ……

共4个回答,已解决, 标签: typescript generics
在 Java 中创建通用列表数组的错误

首码: 列表 [] 数组 = (列表 []) 新对象 [大小]; 它将给出以下异常: java.lang.ClassCastException: class [Ljava.lang.Object; cannot be cast to class [Ljava.util.List; ([Ljava.lang.Object; and [Ljava.util.List; are in module java.base of loader 'bootstrap') 为什么这是错的?我只是跟着有效 Java 第三版:132 页的方法: 第二码: 数组 = (E []) 新对象 [大小]; 然而,我发现以下代码有效 第三码: 列表 [] 数组 = (列表 []) 新列表 [大小]; 我的问题: 1. 为什么第一个代码是错误的,但是第二个代码是在有效的 Java?有什么我误解的吗? 例如: 为什么下面的代码运行良好,但是第一个代码是错误的? 公共类测试 { E 【】数组; 公共测试 () { 数组 = (E []) 新对象 [月]; } 公共 E 组 (E x) { 数组 [0] = x; ……

共3个回答,已解决, 标签: java arrays generics syntax
如何使方法返回与输入相同的泛型?

我想分割一个用逗号分隔的字符串,并将结果用作Seq or a Set: Def splitByComma (已提交: String): 数组 [String] = Commadelim. trim.split (',') Def splitByCommaAsSet (commaDelimited: 字符串): 一套【钱串】 = SplitByComma (commaDelimited)。toSet Def splitByCommaAsSeq (commadelim: String): Seq [String] = SplitByComma (commaDelimited)。toSeq Val foods = "寿司,墨西哥卷饼,卷饼" Val = foodSet splitByCommaAsSet (食品) //Food Set: scala.collection.不可变.Set [字符串] = Set (寿司、玉米卷、墨西哥卷饼) Val = foodSeq splitByCommaAsSeq (食品) //Food Seq: Seq [String] = List (寿司、玉米卷、墨西哥卷饼) ……

共3个回答,已解决, 标签: scala generics type-conversion polymorphism scala-collections
TComparer 怎么传:<T>在 Delphi 中将类转换为泛型类型?

我想创建一个具有一些功能的通用记录,包括搜索功能。要执行此搜索,我想传递一个自定义比较器来比较项目。如果是类,我可以在构造函数中传递它,但是我想使用记录来避免创建或释放它。所以,我没有初始化比较器的构造函数。 然后我决定像类型参数一样传递 Comparer 类,当我需要 comparer 时,使用 TComparer.Default 创建 comparer 的实例。 好,下面是代码: TMyArray> = 记录 FComparer:--右兄弟的; 项目: 塔雷; 函数包含: 布尔; 结束; 当我试图以这种方式使用它时,问题就出现了: TMyRecord = 记录 分数: 真实; A: 字符串; B: 弦; 结束; TMyRecordComparer = 类 (TComparer) 函数比较 (左,右: TMyRecord): 整数; 结束; TMyRecordArray TMyArray =; 使用最后一个声明,我得到了这个错误: E2515 类型参数 “t” 与类型 “system.Generics.default.TComparer \” 不兼容。 知道如何解决这个问题吗? ……

共2个回答,已解决, 标签: delphi generics
构造函数类型参数在放置 * 之前 * 类型时意味着什么?

我最近遇到了这种不寻常的 (对我来说) Java 语法.....。下面是它的一个示例: List list = new ArrayList(); 请注意类型参数的定位..。它不是在正常的类型之后, 而是在之前。我不介意承认我以前从来没见过这种语法。另请注意, 只有1的类型参数有 2个 ArrayList 类型参数。 类型参数的定位是否具有与将它们放在类型之后相同的含义?如果没有, 不同的定位意味着什么? 为什么只有1的情况下, 有2个类型参数是合法 ArrayList 的? 我已经搜索了通常的地方。Angelika Langer 和在这里, 但找不到任何地方提到这种语法除了在 ANTLR 项目的 Java 语法文件中的语法规则。 ……

共2个回答,已解决, 标签: java generics syntax constructor generic-type-argument
使用收集器将列表转换为对象地图-Java

如何使用收集器将 DAOs 列表转换为地图> DaoList 看起来是这样的: [0]: id = “34234”,team = “gools”,name = “bob”,type = “old” [1]: id = “23423”,team = “fool”,name = “sam”,type = “new” [2]: id = “34342”,team = “gools”,name = “dan”,type = “new” 我想按 “团队” 属性分组,并为每个团队列出一个列表,如下所示: "Gools": 【 Id 】: 34234 、【姓名】: 【 bob 】、【类型】: 【旧】、 【 “Id”: 34342 、 “姓名”: “丹” 、 “类型”: “新” 】 【傻瓜】: 【 “Id”: 23423 、 “姓名”: “sam” 、 “类型”: “新” 】 Pojo 看起来是这样的: @ Data @ NoArgsConstructor @ AllArgsConstructor (access = access level.PUBLIC) 公共课 Pojo { 私有字符串 id; 私有 ……

共2个回答,已解决, 标签: java generics java-8 java-stream collectors
如何避免在 Rust 中重复的长泛型约束

我正在尝试自己实现大整数 (仅用于教育)。实现按数据类型是通用的: struct LongNum where T: Integer + MulAssign + CheckedMul + CheckedAdd + Copy + From { values: Vec, powers: Vec, radix: u8, } 问题是, 我需要在所有的植入操作中重复 t 的这个详细约束。太麻烦了。 我可以结合这些约束, 使我自己的特点, 如下所示: trait LongNumValue: Integer + MulAssign + CheckedMul + CheckedAdd + Copy + From {} struct LongNum { values: Vec, powers: Vec, radix: u8, } 但在这种情况下, 我必须将此 LongNumValue 特性的植入添加到可在 LongNum 中使用的所有类型: impl LongNumValue for u8 {} impl LongNumValue for u16 {} impl ……

共1个回答,已解决, 标签: generics rust constraints traits
我可以将字符串转换为具有泛型类型的列表吗?

我正在尝试编写一个函数,通过分隔符拆分字符串,然后返回从拆分段派生的泛型类型的值列表。 公共静态列表拆分列表 (字符串格式、字符串分隔符、类 cls) { 字符串 [] 值 = topfasse.split (分隔符); List list = new ArrayList <> (); 对于 (整数 i = 0; i <值.长度; i) { List.add (cls.cast (值 [i] )); } 返回列表; } 我的代码不工作cls = Integer.class。我做错什么了吗? ……

共1个回答, 标签: java list generics casting
如何创建具有扩展类型的泛型函数的协议

我试图做一个具有泛型函数的协议, 其中 T 不仅等于类型, 而且扩展它。 class MainItem {} class Item1: MainItem {} class Item2: MainItem {} protocol MyProtocol { func myFunc() -> T // T extends MainItem } class ClassA: MyProtocol { func myFunc() -> Item1 { // not MainItem return Item1() } } class ClassB: MyProtocol { func myFunc() -> Item2 { // not MainItem return Item2() } } 但我得到了这个错误 > 类型 "a" 不符合协议 "我的协议" 因为 Item1 不等于 MainItem (它扩展了它)。你怎么能让它起作用呢? 例如, 在 Java 中, 所有的事情都可以使用抽象类完成: abstract class M ……

共1个回答,已解决, 标签: swift generics protocols swift-protocols
如何修复 Alamofire 5 错误: &ldquo;无法将非泛型类型&ldquo; 数据响应 &rdquo;专业化?

我正在将网络基础更新到 Swift (和 Alamofire) 版本 5。 应该提供 “通用响应对象序列化” 的一种方法是抛出错误 > 无法对非泛型类型 “数据响应服务器” 进行专门处理 我认为在 alamfire 5 中,他们制造了这种类型的DataResponseSerializer non-generic. Any ideas how to achieve the same behavior in the newest version? Unfortunately I am not very familiar neither with Alamofire nor Generics。 公共扩展 Alamofire.DataRequest { @ DiscardableResult Func responseDecodableObject (完成处理程序: @ escaping (数据响应)-> Void)-> Self { 这里抛出了错误 请求、响应、数据、错误 卫误差 = = 无其他 {返回。失败 (错误!)} 让结果 = DataRequest。jsonResponseSeriali ……

共0个回答, 标签: ios swift generics alamofire swift5
用泛型类中的组合替换继承?

我一直在阅读很多关于组合的内容,并试图找出如何使用组合来重构我的继承树。目前我的班级看起来像这样: 公共抽象类基类 { 公共抽象字符串显示文本 {get;} 公共摘要列表参数 {get;} 公共抽象 void FireEvent (); } 公共抽象类子类: BaseClass { 私有字符串 _ 显示文本; 公共覆盖字符串显示文本 {get {return_displaytext;}} 私有列表 _ 参数; 公共覆盖列表参数 {get {return _ parameters;}} 私有 t_value;//添加到子类 公共抽象事件 Evt {get;}//添加到子类 公共覆盖 void FireEvent () { Evt。提高 (_ 值); } } 公共类 IntClass: 子类 {} 公共类 StringClass: 子类 {}//更多像这样的子类 根据我的理解,这里既有继承也有组成。 子类Has-A: (组成) 1. 的列表Parameters 2. 字段为Event 3. 的行为Event which is called within it's own FireEv ……

共0个回答, 标签: c# oop generics inheritance composition