Redian新闻
>
问一个Java的问题,关于create generic array
avatar
问一个Java的问题,关于create generic array# Java - 爪哇娇娃
J*G
1
【 以下文字转载自 Salon 讨论区 】
发信人: JGG (六月的茉莉梦), 信区: Salon
标 题: Re: 六四死难烈士永垂不朽!
发信站: BBS 未名空间站 (Thu Jun 4 16:21:56 2009, 美东)
发信人: youknowme2 (you know me too), 信区: Salon
标 题: 不敢想起,永不忘记
发信站: BBS 未名空间站 (Thu Jun 4 08:58:26 2009, 美东)
二十春秋弹指间,
红墙无觅旧烽烟。
绵绵青山埋忠骨,
缕缕华发老红颜。
燕雀不知鸿鹄志,
凡夫难辨周公贤。
啼血岂为留青史,
布谷声声一杜鹃。
作为当年曾经参加六四而苟活的人,谨以此诗献给当年蒙难的烈士。不敢想起,永不忘
记!
avatar
z*r
2
我现在在学习Java,以前会C/C++,但是主要是用C和Matlab。
我用的是Weiss "Data Structures and Problem Solving Using Java 3rd Edition",
现在看到了第四章,关于继承。
里面有一道习题(4.23):
Write generic method max2, which accepts an array and return an array of
length two representing the two largest item in the array. The input array
should be unchanged. Then use this method on String type.
最下面是我的代码。现在我的问题是,我知道创建一个generic array是不被允许的。
StackOverflow上面有人给了一种方法:
AnyType []result=(AnyType []) new Object[2];
这种方法编译没有错的,但是运行的时候会出现[Ljava.lang.Object; cannot be cast
to [Ljava.lang.Comparable;
不知道有什么方法可以解决这个问题吗?
import java.util.ArrayList;
public class q23
{
public static void main(String []args)
{
String []arr={"write", "generic", "methods", "min", "and", "max", "
each", "of", "which", "accept", "two", "parameter"};
String []result=max2(result);
System.out.println("max2(arr)="+result[0]+" and "+result[1]);
}
public static AnyType[] void max2(AnyType[]
arr)
{
int i=0, j1=0, j2=1;
if (arr[0].compareTo(arr[1])>0)
{
j1=0;
j2=1;
}
else
{
j1=1;
j2=0;
}
for (i=2; i{
if (arr[i].compareTo(arr[j2])>0)
{
if (arr[i].compareTo(arr[j1])>0)
{
j2=j1;
j1=i;
}
else
{
j2=i;
}
}
}
/** compiled ok but run time error: [Ljava.lang.Object; cannot be
cast to [Ljava.lang.Comparable;
ArrayList result=new ArrayList(2);
result.add(arr[j1]);
result.add(arr[j2]);
return result.toArray(null);
AnyType []result=(AnyType []) new Object[2];
result[0]=arr[j1];
result[1]=arr[j2];
return result;
*/
}
}
avatar
F*n
3
Use
java.lang.reflect.Array.newInstance(AnyType.class, 2)

【在 z**********r 的大作中提到】
: 我现在在学习Java,以前会C/C++,但是主要是用C和Matlab。
: 我用的是Weiss "Data Structures and Problem Solving Using Java 3rd Edition",
: 现在看到了第四章,关于继承。
: 里面有一道习题(4.23):
: Write generic method max2, which accepts an array and return an array of
: length two representing the two largest item in the array. The input array
: should be unchanged. Then use this method on String type.
: 最下面是我的代码。现在我的问题是,我知道创建一个generic array是不被允许的。
: StackOverflow上面有人给了一种方法:
: AnyType []result=(AnyType []) new Object[2];

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。