草庐IT

Generics

全部标签

java - 继承了一些不好的 Java 泛型

这是一个讨厌的问题,可能是设计不好。编写一组简单的图表组件(饼图、条形图和折线图)并且被一些泛型的东西噎住了。事先,我确定有许多JavaAPI可以完全执行我在这里尝试执行的操作(制图/报告/等),但是我对这个作为一般泛型问题很感兴趣;它涉及图表和报告组件这一事实是微不足道的。每个图表都继承自通用抽象基类Chart:publicabstractclassChart{privateListcomponents;//...restoftheChartclass}我们有TextendsChartComponent的原因是因为每个图表子类都将由1+个所谓的图表组件(条形图、折线图、饼形楔形图等)

java - 滥用泛型在 Java 中实现柯里化(Currying)组合函数

因此,在稍微接触了Java泛型之后,为了更深入地了解它们的功能,我决定尝试实现函数式程序员熟悉的组合函数的柯里化(Currying)版本。Compose具有类型(在函数式语言中)(b->c)->(a->b)->(a->c)。执行柯里化(Currying)算术函数并不太难,因为它们只是多态的,但compose是一个高阶函数,事实证明它对我理解Java中的泛型很费力。这是我目前创建的实现:publicclassCurrying{publicstaticvoidmain(String[]argv){//BasicusageofcurryingSystem.out.println(add().

Java Swing - 如何处理 ActionListener 中的泛型

我有:classCustomerActionListenerimplementsActionListener{@OverridepublicvoidactionPerformed(ActionEventevent){JComboBoxcb=(JComboBox)event.getSource();..dosomething}}这导致在jdk7中出现以下编译器警告:JComboBox是原始类型。对泛型JComboBox的引用应该被参数化我试图将其参数化为:JComboBoxcb=(JComboBox)event.getSource();但这仍然会留下以下编译器警告:类型安全:未经检查的从

java - 这个 Java 函数从哪里推断出它的泛型类型?

我发现了一些通用代码,它让我很困惑它是如何工作的。我不明白它从哪里获得用于T的通用类型。这是一个过于简化的示例,但我仍然不明白这是有效的Java代码。publicstaticvoidmain(String[]args){System.out.print(get());}publicstaticTget(){return(T)getObj();}publicstaticObjectgetObj(){returnBoolean.FALSE;} 最佳答案 类型推断基于调用点。但是,如果返回值被分配给变量,则类型推断仅适用于返回类型。这是写

java - 混合 Scala 和 Java : How to get generically typed constructor parameter right?

我有一些遗留的Java代码定义了一个通用的payload变量在我控制之外的地方(即我不能改变它的类型)://JavacodeWrapperpayload=...我收到这样一个payload值作为我代码中的方法参数,并想将它传递给Scalacaseclass(到用作Actor系统的消息),但不要正确定义,这样我至少不会收到编译器警告。//stillJavacodeScalaMessagemsg=newScalaMessage(payload);这会给出编译器警告“类型安全:构造函数...属于原始类型...”Scala案例类定义为://ScalacodecaseclassScalaMess

java - 以编程方式指定 Java 类文字(无需硬编码)?反射?

问题:行内Objecto=myC.getConstructor(short.class).newInstance(myC.cast(pPrim));有没有办法避免硬编码“short.class”,而是从pPrim获取文字?我从Createnewobjectusingreflection?中的答案中得到使用“short.class”的想法我不应该使用“To=...(例如,对于Byte或Short)而不是Objecto=...?我认为我的方法与ClassLiteralsasRuntime-TypeTokens末尾的方法几乎相同.我想做的是反射(reflection)吗?背景:我正在学习Fi

java - Java中通配符泛型的实际使用

我最近参加了一次Java考试,其中有一个很大的部分是关于Java中的通配符泛型的。然而,关于它们在实践中的用法却鲜有提及。我们什么时候应该使用它们?让我们看一个典型的用法:voidcheck(Collectionlist){//Dosomething}文档说,这个集合不允许向列表中添加任何元素。所以基本上通配符可用于使集合只读。那是他们唯一的用途吗?有什么实际需要吗?在过去的四年里,我参与了很多Java编程项目,但我还没有看到任何项目会广泛使用通配符这样的特性。那么,从实际的角度来看,有没有什么情况下,通配符泛型是不可避免且必须的呢? 最佳答案

java - 调用接受 Class<T> 并返回 T 的泛型方法时,如何返回特定类型的列表?

我正在使用这个签名从一个库中调用一个方法:publicTget(Classc)我想要一个List作为返回值。但是这样调用它不会编译(“无法从参数化类型中选择”):ListmyClasses=get(List.class);这会编译,但会给出警告:ListmyClasses=get(List.class);警告说“未经检查的分配”。我怎样才能避免此警告并避免转换我的名单? 最佳答案 您在这里使用的是泛型,因此列表中项目的基础类型在运行时已被删除,编译器知道它无法在编译时为您检查它,因此出现警告。如果您在这里使用通用类型,您将无法避免警

Java 泛型方法返回不同的类型 - 无一异常(exception)

我发现了一些奇怪的代码,其中我说“这永远不会被调用,因为它会抛出类转换异常”。好吧,代码被调用并正常工作。谁能给我解释一下:为什么会这样?方法getZipList()被定义为返回一个字符串列表,但内部逻辑返回一个包含不同对象的列表。同样在main方法内部,字符串列表应为“列表”,但列表包含不同的内容。publicclassGenericMethodList{publicstaticvoidmain(String[]args){GenericMethodListo=newGenericMethodList();Listlist=o.getZipList(true);Iteratorite

java - 使用 Scala 和 Jackson 以及 java.lang.Integer 或 scala.Int 对泛型类型进行奇怪的反序列化问题

我们都知道泛型类型在Java和Scala下会被类型删除。但是我们在使用Jackson和ScalaJackson模块的Scala中遇到了一个奇怪的问题。我创建了一个小测试来展示这个问题。importcom.fasterxml.jackson.databind.ObjectMapperimportcom.fasterxml.jackson.module.scala.DefaultScalaModuleobjectGenericTest{caseclassTestWithInt(id:Option[Int])caseclassTestWithInteger(id:Option[Integer