java关于传任意类型参数的问题
我有以下一个java程序:package javatest1;
import java.util.ArrayList;
import java.util.List;
public class javatest1 extends common{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/* String c="Hello World!";
String d="您好!";
String e="0123456789";
stringchangeasc(c);
printseparator();
stringchangeasc(d);
printseparator();
stringchangeasc(e);
printseparator(); */
/*String c="Hello World! Welcome China![520]";
print("原字符串是:"+c);
printseparator();
StringBuilder resultstring=stringchangcw(c);
StringBuilder resultstring2=stringchangeasc(c);;
print("在原字符的基础中,每一个字符串大写改为小写,小写改为大写,不是字母不改变:"+resultstring);
printseparator();
print("原字符串每一个字符的ascii码:");
print(resultstring2);
printseparator();*/
/*int cai = 0;
char[] ca;
List cb=new ArrayList();
StringBuilder sb=new StringBuilder();
ca = c.toCharArray();
for(int i=0;i<ca.length;++i)
{
if(ca[i]>65 && ca[i]<90)
{
cai=ca[i]+32;
}
else
if(ca[i]>97 && ca[i]<122)
{
cai=ca[i]-32;
}
else
{
cai=ca[i];
}
//cai=ca[i]+32;
cb.add(cai);
}
for(int j=0;j<cb.size();++j)
{
int obji=(int) cb.get(j);
char oi=(char)obji;
sb.append(oi);
}
print(sb); */
//int result1=argadd(5);
//int result2=argadd(5,4);
//int result3=argadd(1,2,3);
//int result4=argadd(5,7,8,2,3,1,4,6,9,10);
//int result5=argmax(5,7,8,2,3,1,4,10,6,9,15);
// int result6=argmin(5,7,8,2,3,1,4,10,6,9,15);
int[] result8=argascsort(5,7,8,2,3,1,4,10,6,9,15);
int[] result9=argdescsort(5,7,8,2,3,1,4,10,6,9,15);
//int[] result8=argascsort(5,4,3);
//int[] result8=argascsort(8,7,5);
//print(8);
// print(7);
// print(5);
// print(result1);
// print(result2);
// print(result3);
// print(result4);
int len=result8.length;
for(int i=0;i<len;++i)
{
print("第"+(i+1)+"个数据是"+result8[i]);
}
printseparator();
int len2=result9.length;
for(int i=0;i<len2;++i)
{
print("第"+(i+1)+"个数据是"+result9[i]);
}
int a=1;
int b=2;
swapobj so1=new swapobj();
swapobj so2=new swapobj();
so1.swapvalue=1;
so2.swapvalue=2;
sortdata(so1,so2);
print(so1.swapvalue);
print(so2.swapvalue);
}
}
以下是common类文件:
package javatest1;
import java.util.ArrayList;
import java.util.List;
class swapobj<E>
{
E swapvalue;
}
public class common {
//简单打印
public static <E> void print(E value)
{
System.out.println(value);
}
//字符串每个字符变成ascii码
public static StringBuilder stringchangeasc(String value)
{
char[] ca;
int cai;
StringBuilder sb=new StringBuilder();
ca = value.toCharArray(); //把传过来的value转换为字符数组
for(int i=0;i<ca.length;++i)
{
cai=ca[i];
//print(ca[i]+"的ascii码是"+cai);
sb.append(ca[i]+"的ascii码是"+cai);
sb.append("\n");
}
return sb;
}
//如果输出内容是不同部分的话,用************************************隔开
public static void printseparator()
{
print("************************************");
}
//字符串中每一个字符串大写变小写,小写变大与,如果不是字母的话不改变
public static StringBuilder stringchangcw(String value)
{
int cai = 0;
char[] ca;
List cb=new ArrayList();
StringBuilder sb=new StringBuilder();
ca = value.toCharArray();
for(int i=0;i<ca.length;++i)
{
if(ca[i]>65 && ca[i]<90)
{
cai=ca[i]+32;
}
else
if(ca[i]>97 && ca[i]<122)
{
cai=ca[i]-32;
}
else
{
cai=ca[i];
}
//cai=ca[i]+32;
cb.add(cai);
}
for(int j=0;j<cb.size();++j)
{
int obji=(int) cb.get(j);
char oi=(char)obji;
sb.append(oi);
}
return sb;
}
//对传过来的值相加,得到传过来的值的和,传过来的参数个数不限,喜欢多少个参数都可以
public static int argadd(int... arg){
int sum = 0,len=arg.length;
for(int i=0;i<len;++i){
sum=sum+arg[i];
}
return sum;
}
//对传过来的值找出最大值,传过来的参数个数不限,喜欢多少个参数都可以
/*public static int argmax(int... arg){
int max = arg[0],len=arg.length;
for(int i=1;i<len;++i){
if(max<arg[i])
{
max=arg[i];
}
}
return max;
}*/
public static <E> E argmax(E... arg){
E max = arg[0];
int len=arg.length;
for(int i=1;i<len;++i){
if(max<arg[i])
{
max=arg[i];
}
}
return max;
}
//对传过来的值找出最小值,传过来的参数个数不限,喜欢多少个参数都可以
public static int argmin(int... arg){
int min = arg[0],len=arg.length;
for(int i=1;i<len;++i){
if(min>arg[i])
{
min=arg[i];
}
}
return min;
}
//对传过来的值进行由小到大排序,传过来的参数个数不限,喜欢多少个参数都可以
public static int[] argascsort(int... arg){
int index,temp,len=arg.length;
//print(len);
// print(min);
for(int i=0;i<len-1;++i){
index=i;
for(int j=i+1;j<len;++j)
{
if(arg[index]>arg[j])
{
index=j;
}
}
temp=arg[i];
arg[i]=arg[index];
arg[index]=temp;
}
return arg;
}
//对传过来的值进行由大到小排序,传过来的参数个数不限,喜欢多少个参数都可以
public static int[] argdescsort(int... arg){
swapobj so1=new swapobj();
swapobj so2=new swapobj();
int index,temp,len=arg.length;
for(int i=0;i<len-1;++i){
index=i;
for(int j=i+1;j<len;++j)
{
if(arg[index]<arg[j])
{
index=j;
}
}
temp=arg[i];
arg[i]=arg[index];
arg[index]=temp;
//so1.swapvalue=arg[i];
// so2.swapvalue=arg[index];
// sortdata(so1,so2);
}
return arg;
}
//交换传过来的value1和value2的值
public static void sortdata(swapobj value1,swapobj value2)
{
swapobj temp = new swapobj();
temp.swapvalue=value1.swapvalue;
value1.swapvalue=value2.swapvalue;
value2.swapvalue=temp.swapvalue;
}
}
但运行程序时出现以下错误:
The operator < is undefined for the argument type(s) E, E
各位高手们,我想argmax这个函数的参数类型不只是int类型,传String,Char或者int都可以执行,但只是编写一个函数,不想编多个重载函数