Java 泛型-如何传递对象数组
我们目前正在课堂上学习泛型,但我仍然感到困惑。我目前正在做一项作业,我的老师要我做的是使用二进制搜索算法搜索具有一定半径的圆。我相信我已经设置好了一切,但我对如何将对象数组传递给泛型方法感到困惑。如果我不能,我怎样才能使用泛型访问对象数组。我希望我问得对 这是我所拥有的,当然没有Java 泛型-如何传递对象数组,java,generics,computer-science,Java,Generics,Computer Science,我们目前正在课堂上学习泛型,但我仍然感到困惑。我目前正在做一项作业,我的老师要我做的是使用二进制搜索算法搜索具有一定半径的圆。我相信我已经设置好了一切,但我对如何将对象数组传递给泛型方法感到困惑。如果我不能,我怎样才能使用泛型访问对象数组。我希望我问得对 这是我所拥有的,当然没有 public class Question1 { public static void main(String[] args) { Circle[] b = {new Circle(1),new Circle(
public class Question1
{
public static void main(String[] args)
{
Circle[] b = {new Circle(1),new Circle(2),new Circle(3),new Circle(4),new Circle(5)};
System.out.println(b[0].getR());
run(b,3,0, b.length-1);
}
/**
*
* @param <T>
* @param b
* @param key
* @param low
* @param high
*/
public static <T> Object run(T[] b , T key, int low, int high)
{
int mid = ((low + high)/2);
if(high < low)
{
System.out.print(-1);
}
if(key == b[mid])
{
System.out.println(b[mid]);
}
if(key < b[mid])
{
return run(b,key,low,mid-1);
}
else
{
return run(b,key,mid+1,high);
}
}
}
谢谢,
fish如果我理解正确,第二个参数的类型需要是一个圆,而不是当前的整数3
public static void main(String[] args)
{
Circle[] b = {new Circle(1),new Circle(2),new Circle(3),new Circle(4),new Circle(5)};
System.out.println(b[0].getR());
run(b, new Circle(3), 0, b.length-1); // <-- change this line
}
泛型是一种在维护类型安全的同时将代码泛化到各种类型的方法。向某人介绍泛型的通常方法是比较非泛型列表接口和泛型列表接口。原始列表可以包含任何对象类型,因此不是类型安全的。原始列表可以同时包含您最喜爱的硬币和邮票收藏,这可能会在您去取回硬币但得到邮票实例时导致困难的错误 列表只能包含硬币实例。编译器将不允许在列表中插入戳记。只要程序编译时没有错误或警告,编译器保证每次你从列表中取出硬币时,你只能得到硬币 我的老师要我做的是使用二进制搜索算法 搜索具有特定半径的圆 这个作业不需要通用方法,所以我不知道为什么要你写一个,除非你没有透露作业的细节 您当前的解决方案包含一个突出的问题:您不能使用==运算符来测试对象之间的值相等性。在对象比较中,==运算符仅测试标识。这将打印错误:
System.out.println("my test" == new String("my test"));
上面有两个具有独立标识的对象:字符串文本和新创建的字符串实例。它们都具有不同的标识,即使它们具有相同的值,因此表达式的计算结果为false。对于对象之间的值比较,需要编写equals和hashCode方法。其计算结果为true:my test.equalsnew Stringmy test
还请注意,它们的objects key