草庐IT

具有通用静态工厂的 Java 泛型益智游戏

我最近开始为一个项目编写通用对象映射器,但遇到了一些我不太了解的问题。鉴于以下情况:publicclassG{publicG(Classc){}publicvoidm(Xx){}publicstaticGcreate(Classc){returnnewG(c);}publicstaticvoidmain(String[]args){Objecto="";//irrelevant!Gt=create(o.getClass());t.m(o);}}我得到以下编译错误:m(capture#402of?)inGcannotbeappliedto(java.lang.Object)我似乎无法找到

java - 相互依赖/循环泛型循环

问题:我有两个接口(interface)(这里是GenCarry和Gen):publicinterfaceGenCarry{GenCarrysetGen(Tgen);}publicinterfaceGen{voidapplyOn(Tcarry);}当我忽略“原始类型”警告时它会起作用,但尝试完成它们我不会做得太过分:GenCarry>>Gen>>->error:notavalidsubstitutefortheboundedparameter.问题:如果完整的话,这样的界面会是什么样子——或者甚至可能吗?是否有更好的方法来“概括”这样的界面? 最佳答案

Java 泛型奇怪的行为

这很难用语言来解释,但是JavaGenerics给了我意想不到的结果。我希望如果我说列表的类型是?extendsObject,我可以在那里存放任何东西。因此,如果列表类型为Wrapper,我可以在其中存储任何类型的Wrapper。等等。这对我来说很有意义。但让我们假设我们有:privatestaticclassWrapper{publicWrapper(Tt){/**/}}我想要这样的东西:privatestaticfinalList>>ls1=newArrayList();请注意,这会给我一个错误:publicstaticdoit(Tt){Wrapper>l1=newWrapper(

java - 如何确定使用lambda实现泛型FunctionalInterface的Bean的类型参数?

我有一个通用的功能接口(interface):@FunctionalInterfacepublicinterfaceFeeder{voidfeed(Tt);}还有几个为不同的Animal子类实现该接口(interface)的bean。@ConfigurationpublicclassConfig{@BeanpublicFeederdogFeeder(){returndog->dogService.feedDog(dog);}@BeanpublicFeedercatFeeder(){returncat->catService.feedCat(cat);}}现在,服务类已经被注入(inje

java - 泛型 Java 类型的类不能分配给其类类型上限为泛型父类(super class)型的变量

我使用Java8。在我的设计中有一些简单的类,它们对值参数进行建模,例如FloatParameter。或EnumParameter.A具有这些类的通用父类(superclass)(GenericParameter),它实现了参数名称及其默认值。子类实现其他特定于它们的属性,例如FloatParameter的范围。.此外,我想处理参数的类型,而不考虑它们的具体类型。但我仍然想以它们是GenericParameter的子类型的方式来绑定(bind)类型.为此,我创建了一个方法,例如process(Class>paramType).现在,问题是EnumParameter.class不能分配给

java - Java泛型中类型参数的前向引用

根据Java泛型常见问题解答http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeParameters.html#FAQ302不能以这种方式向前引用类型参数//error但还是可以的,B>//ok这两个例子都是用最新的jdk1.6.0_24验证的.我的问题是,在语言规范中,这是指定的、暗示的或可扣除的(即,如果它不真实,其他事情可能会爆炸)。我到处都找不到。更新在javac7中,是允许的。直觉上,类型参数的顺序无关紧要;类型系统要求类型变量之间没有循环依赖:.以前,这可以通过禁止前向引用来保证。显然javac7得到了改进以放

java - 为泛型分配默认值

我通过反射调用一个方法,它的返回类型是通用的。我不希望返回值为null,所以在这种情况下,我想分配一个该泛型类型的默认值。也就是说,在通过反射调用方法后,我想执行如下操作:TresultNotNull=(T)reflectionMethodThatCanReturnNull.invoke(anObject);//Ifit'snull,let'sassignsomethingassignable.if(resultNotNull==null){if(resultNotNull.getClass().isAssignableFrom(Long.class)){resultNotNull=(

java - 检索泛型类的 .class 属性

我正在尝试使用构造函数(来自Ektorp库)扩展以下类:publicclassCouchDbRepositorySupportimplementsGenericRepository{...protectedCouchDbRepositorySupport(Classtype,CouchDbConnectordb){...}这是我的实现:publicclassOrderRepositoryextendsCouchDbRepositorySupport>{publicOrderRepository(CouchDbConnectordb){super(Order.class,db);问题出在

java - Spring data - 域对象继承和泛型方法

我有一些域对象:@EntitypublicclassLog{}@EntitypublicclassLogLetterextendsLog{}@EntitypublicclassLogActionextendsLog{}我只想拥有一个存储库,它允许我获取Log的子项。理论上我可以做这样的事情吗?publicinterfaceLogRepositoryextendsCrudRepository{@Query("selectfrom?1)publicListgetLog(Classclazz);}并调用这个方法:ListlogLetters=getLog(LogLetters.class);

使用非泛型类扩展泛型类时的 Javadoc

假设我有两个类:abstractclassGenericA{publicvoidgo(Ee){...}}publicclassIntegerAextendsGenericA{}请注意,GenericA是包私有(private)的和通用的,而IntegerA是公共(public)的而不是通用的。现在,当我生成公共(public)Javadoc(使用Eclipse)时,我在IntegerA方法部分看到以下内容:publicvoidgo(Ee)问题是Javadoc的读者不知道E是什么;即,E代表Integer。我宁愿让Javadoc说publicvoidgo(Integere)有没有办法让J