Tag: generics

将对象转换为genericstypes以返回

有没有办法将一个对象返回一个方法的返回值? 我试过这种方式,但它在“instanceof”部分给了一个编译时exception: public static <T> T convertInstanceOfObject(Object o) { if (o instanceof T) { return (T) o; } else { return null; } } 我也试过这个,但它给了一个运行时exception,ClassCastException: public static <T> T convertInstanceOfObject(Object o) { try { T rv = (T)o; return rv; } catch(java.lang.ClassCastException e) { return null; } } 有没有一个可能的方式做到这一点很容易: String s = convertInstanceOfObject("string"); System.out.println(s); // […]

对于无效genericstypes参数的最佳例外

我目前正在为UnconstrainedMelody编写一些代码,它具有通用方法来处理枚举。 现在,我有一个静态类与一堆方法, 只是用于“旗”枚举。 我不能添加这个作为约束…所以有可能他们也会被其他枚举types调用。 在这种情况下,我想抛出一个exception,但我不确定哪一个抛出。 只是为了使这个具体,如果我有这样的东西: // Returns a value with all bits set by any values public static T GetBitMask<T>() where T : struct, IEnumConstraint { if (!IsFlags<T>()) // This method doesn't throw { throw new ??? } // Normal work here } 什么是最好的例外扔? ArgumentException听起来合乎逻辑,但它是一个types参数而不是一个正常的参数,这很容易混淆。 我应该引入我自己的TypeArgumentException类吗? 使用InvalidOperationException ? NotSupportedException ? 还要别的吗? 我宁愿不为此创造我自己的例外,除非这显然是正确的事情。

Mockito.any()通过与generics接口

是否有可能通过genericstypes的接口? 界面: public interface AsyncCallback<T> 在我的testing方法中: Mockito.any(AsyncCallback.class) 把<ResponseX>放在后面或者.class没有工作。

我可以使用Dictionary <TKey,TValue>条目的集合初始值设定项吗?

我想为下一个代码使用一个集合初始值设定项: public Dictionary<int, string> GetNames() { Dictionary<int, string> names = new Dictionary<int, string>(); names.Add(1, "Adam"); names.Add(2, "Bart"); names.Add(3, "Charlie"); return names; } 所以通常应该是这样的: return new Dictionary<int, string> { 1, "Adam", 2, "Bart" … 但是,这是什么正确的语法?

为什么有人声称Java的generics实现不好?

我偶尔听说generics,Java没有得到正确的答案。 (最近的参考, 这里 ) 请原谅我的经验不足,但是会让他们变得更好吗?

有什么区别? 和Java中的对象generics?

我正在使用Eclipse来帮助我清理一些代码,以正确使用Javagenerics。 大多数情况下,它在推断types方面做得非常出色,但在某些情况下,推断types必须尽可能通用:对象。 但是Eclipse似乎给了我一个在Objecttypes和'?'types之间进行select的选项。 那么有什么区别: HashMap<String, ?> hash1; 和 HashMap<String, Object> hash2;

为什么没有在Go的generics?

免责声明:我现在只玩了一天,所以很有可能我错失了很多。 有谁知道为什么没有真正的支持generics/模板/ whats inAName在Go? 所以有一个通用map ,但这是由编译器提供的,而Go程序员不能编写自己的实现。 所有关于使Go尽可能正交的讨论,为什么我可以使用generics而不是创build一个新的? 特别是当涉及到函数式编程时,有lambda函数,甚至闭包,但是对于一个缺乏generics的静态types系统,我该如何编写像filter(predicate, list)这样的通用高阶函数呢? 好的,链接列表等可以用牺牲types安全性来完成。 对于SO / Google的快速search没有透露任何见解,它看起来像generics,如果有的话,将被添加到Go作为事后的想法。 我确实相信汤普森比爪哇人做得更好,但是为什么要把generics放在一边呢? 还是他们计划,只是没有实施?

我如何使一个方法的返回types是通用的?

有没有办法使这个方法通用,所以我可以返回一个string,布尔,整数,或双? 现在,它返回一个string,但如果它能find“true”或“false”作为configuration值,我想返回一个布尔例如。 public static string ConfigSetting(string settingName) { return ConfigurationManager.AppSettings[settingName]; }

java:HashMap <String,int>不工作

HashMap<String, int>似乎不起作用,但HashMap<String, Integer>确实起作用。 任何想法为什么?

在swift中使用协议作为数组types和函数参数

我想创build一个可以存储符合某个协议的对象的类。 对象应该存储在一个types数组中。 根据Swift文档协议可以作为types使用: 因为它是一种types,所以可以在许多其他types允许的地方使用协议,包括: 作为函数,方法或初始值设定项中的参数types或返回types 作为常量,variables或属性的types 作为数组,字典或其他容器中的项目的types 但是,以下生成编译器错误: 协议“SomeProtocol”只能用作通用约束,因为它具有自我或相关types的要求 你应该如何解决这个问题: protocol SomeProtocol: Equatable { func bla() } class SomeClass { var protocols = [SomeProtocol]() func addElement(element: SomeProtocol) { self.protocols.append(element) } func removeElement(element: SomeProtocol) { if let index = find(self.protocols, element) { self.protocols.removeAtIndex(index) } } }