Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不兼容类型(泛型)_Java_Maven_Compilation_Java 6 - Fatal编程技术网

Java 不兼容类型(泛型)

Java 不兼容类型(泛型),java,maven,compilation,java-6,Java,Maven,Compilation,Java 6,我要走了 不兼容类型;推断的类型参数java.lang.Object不符合类型变量T的边界 [错误]找到:int [错误]必需:int [错误]->[帮助1] 因为我的方法 private int useComparator(最终对象o1、最终对象o2、最终字符串属性){ final T s1=新的PropertyModel(o1,property).getObject(); final T s2=新的PropertyModel(o2,property).getObject(); 返回s1.c

我要走了

不兼容类型;推断的类型参数java.lang.Object不符合类型变量T的边界
[错误]找到:int
[错误]必需:int
[错误]->[帮助1]
因为我的方法

private int useComparator(最终对象o1、最终对象o2、最终字符串属性){
final T s1=新的PropertyModel(o1,property).getObject();
final T s2=新的PropertyModel(o2,property).getObject();
返回s1.compareTo(s2);
}
其中
PropertyModel
org.apache.wicket.model.PropertyModel
,但实际上这并不重要(这个类只返回某个字段的值,顺便问一下:例如,在Spring中是否有具有类似函数的类?)

问题在于调用该方法的第行:

返回此值。使用Comparator(o1、o2、sortProperty);
我可以用电脑来解决这个问题

返回这个。使用比较器(o1、o2、sortProperty);
但是我想知道..我在Eclipse和NetBeans中编译这样的代码时没有问题。据我所知,我使用的是相同的java,但在Maven中,我从帖子的乞讨中得到了错误。是否有我遗漏的编译器标志

不确定这是否有帮助,但我的Maven版本是:

>mvn-版本
ApacheMaven 3.0.4(r1232337;2012-01-17 09:44:56+0100)
Maven主页:c:\Programs\apache-Maven-3.0.4
Java版本:1.6.0_37,供应商:Sun Microsystems Inc。
Java主页:c:\Java\jdk1.6.0\u 37\jre
默认区域设置:sk_sk,平台编码:Cp1250
操作系统名称:“windows 7”,版本:“6.1”,arch:“amd64”,系列:“windows”
来自
pom.xml
的Maven编译器插件设置:


org.apache.maven.plugins
2.5.1
真的
生成maven项目。我用过:

mvn原型:generate-DarchetypeGroupId=org.apache.wicket-DarchetypeArtifactId=wicket原型快速启动-DarchetypeVersion=6.6.0-DgroupId=net.betlista-DartifactId=stackoverflow-DarchetypeRepository=-DinteractiveMode=false

将项目导入到您喜爱的IDE

使用此JUnit测试模拟问题:

package net.betlista;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.Comparator;
导入junit.framework.Assert;
导入org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
导入org.apache.wicket.model.PropertyModel;
导入org.junit.Test;
公共类比较测试{
@试验
公开无效测试(){
最终ArrayList人员=新ArrayList();
最终人选alice=新人(“alice”,30岁);
添加(alice);
最终人员bob=新人员(“bob”,20);
添加(bob);
Collections.sort(人员、新属性比较程序(新sortpram(“name”,true));
Assert.assertEquals(alice,persons.get(0));
Assert.assertEquals(bob,persons.get(1));
Collections.sort(人员、新属性比较者(新排序图(“名称”,false));
Assert.assertEquals(alice,persons.get(1));
Assert.assertEquals(bob,persons.get(0));
集合。排序(人员、新属性比较(新排序图(“年龄”,真));
Assert.assertEquals(alice,persons.get(1));
Assert.assertEquals(bob,persons.get(0));
集合。排序(人员、新属性比较(新排序图(“年龄”,false));
Assert.assertEquals(alice,persons.get(0));
Assert.assertEquals(bob,persons.get(1));
}
静态类人{
字符串名;
整数年龄;
公众人物(最终字符串名称、最终整数年龄){
this.name=名称;
这个。年龄=年龄;
}
}
私有静态类PropertyComparator实现Comparator{
私人排序;
公共属性比较程序(最终排序图排序){
this.sort=排序;
}
@凌驾
公共整数比较(最终对象o1,最终对象o2){
final int dir=sort.isAscending()?1:-1;
最后一个字符串sortProperty=sort.getProperty();
return dir*this.useComparator(o1,o2,sortProperty);
}
私有int-useComparator(最终对象o1、最终对象o2、最终字符串属性){
final T p1=新的PropertyModel(o1,property).getObject();
final T p2=新的PropertyModel(o2,property).getObject();
返回p1.compareTo(p2);
}
}
}
在我的环境中,这在Eclipse中运行良好,但在尝试使用

mvn clean install

当我试图将
useComparator
移出
PropertyComparator
并将其设置为静态时,没有任何帮助……

useComparator
不应该是静态的吗?那么
o1
o2
的类型是什么?如果你能发布一个简短但完整的程序来演示这个问题,那会很有帮助。谢谢你的评论,但事实上我认为,这是静态方法还是我想使用的类型并不重要,所以我不想用无用的代码来搞乱这个问题,但我很快会添加完整的代码…@KugathasanAbimaran将错误格式化为一行而不是Maven所示的四行是否真的更好#您的编辑完整代码已添加到问题中