关于泛型的问题,请上级指示

Myxiao7_ 2010-06-19 10:04:51
1.需求
定义一个具有一个参数的泛型类,在其中定义2个泛型方法,分别返回2个泛型形参的和与差,在main()函数中分别传入Double、Float、Integer类型实参,验证方法的执行

2.我的代码


class BankBusiness<T>{
//加
public T plus(T num1,T num2){
return num1+num2; }
//减
public T minus(T num1,T num2){
return num1-num2; }
}

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
BankBusiness<Double> bb1=new BankBusiness<Double>();
System.out.println(bb1.plus(1.2, 2.2));

}

}



3.背景

a.作业题
b.百度无果
c.红色字体处提示出错,eclipse提示说未为参数类型T定义 + 操作

4.求助
请问这个问题应该如何解决?请上级指示。

5.贴尾
临帖涕零,不知所言。
...全文
270 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamdhj 2010-06-26
  • 打赏
  • 举报
回复
题目虽然不好,但是还是有方法。
public class Operation<O > {
public O num;
public O add(O num1,O num2){
BigDecimal b1=new BigDecimal(num1.toString());
BigDecimal b2=new BigDecimal(num2.toString());
num=(O)b1.add(b2);
return num;
}
public O subtract(O num1,O num2){
BigDecimal b1=new BigDecimal(num1.toString());
BigDecimal b2=new BigDecimal(num2.toString());
num=(O)b1.subtract(b2);
return num;
}
TiFaLockhart 2010-06-24
  • 打赏
  • 举报
回复
...HR....万恶的题目啊,一不小心把题目搞得这么烦....
WilliamTau 2010-06-23
  • 打赏
  • 举报
回复
一起HR的~
zxc91827 2010-06-21
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 xinszeto 的回复:]
LZ是 HR的?
[/Quote]
那你是HR的了
XinSzeto 2010-06-21
  • 打赏
  • 举报
回复
LZ是 HR的?
closewbq 2010-06-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 myxiao7_ 的回复:]
根据前人的指点

我做了如下修改:

Java code



class MyDouble implements BankBusiness<Double>{

@Override
public Double add(Double num1, Double num2) {
return num1+num2;
}

@Ov……
[/Quote]
就是这样。
Myxiao7_ 2010-06-19
  • 打赏
  • 举报
回复
根据前人的指点

我做了如下修改:



class MyDouble implements BankBusiness<Double>{

@Override
public Double add(Double num1, Double num2) {
return num1+num2;
}

@Override
public Double minus(Double num1, Double num2) {
return num1-num2;
}

}

interface BankBusiness<T>{
//加
public T add(T num1,T num2);
//减
public T minus(T num1,T num2);
}


public class Test {

/**
* @param args
*/
public static void main(String[] args) {
MyDouble bb1=new MyDouble();
System.out.println(bb1.add(1.2, 2.2));

}

}



但是不太符合题目要求,感觉也是个问题。欢迎指点
焙焙龙 2010-06-19
  • 打赏
  • 举报
回复
T是一个未知类型的,你怎么能贸然给他+的操作符
luojihaidao 2010-06-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 closewbq 的回复:]
interface BankBusiness<T>{
public T plus(T num1,T num2);
public T minus(T num1,T num2);
}
定义成接口
然后Double、Float、Integer去实现这个接口
[/Quote]

Double、Float、Integer 好像是final的吧。
closewbq 2010-06-19
  • 打赏
  • 举报
回复
interface BankBusiness<T>{
public T plus(T num1,T num2);
public T minus(T num1,T num2);
}
定义成接口
然后Double、Float、Integer去实现这个接口
Myxiao7_ 2010-06-19
  • 打赏
  • 举报
回复
红色字体如下:

return num1+num2;
return num1-num2;
coooliang 2010-06-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 redduke1202 的回复:]
一个蹩脚的实现

Java code

/**
* @author Redduke
*/
public class R<T extends Number> {
public T plus(T t1, T t2) {
Object v;
Class<?> clazz = t1.getClass();
if (clazz……
[/Quote]

收着 应该用得到
macrotea-cn 2010-06-19
  • 打赏
  • 举报
回复
那感谢了啊
alex44667416 2010-06-19
  • 打赏
  • 举报
回复
楼上的完全满足这个作业的要求!
macrotea-cn 2010-06-19
  • 打赏
  • 举报
回复
向楼上的致于崇高的敬意
「已注销」 2010-06-19
  • 打赏
  • 举报
回复
一个蹩脚的实现

/**
* @author Redduke
*/
public class R<T extends Number> {
public T plus(T t1, T t2) {
Object v;
Class<?> clazz = t1.getClass();
if (clazz == Byte.class) {
v = (byte) (t1.byteValue() + t2.byteValue());
} else if (clazz == Short.class) {
v = (short) (t1.shortValue() + t2.shortValue());
} else if (clazz == Integer.class) {
v = t1.intValue() + t2.intValue();
} else if (clazz == Long.class) {
v = (long) (t1.longValue() + t2.longValue());
} else if (clazz == Float.class) {
v = (float) (t1.floatValue() + t2.floatValue());
} else if (clazz == Double.class) {
v = t1.doubleValue() + t2.doubleValue();
} else
throw new IllegalArgumentException();
return (T) v;
}

public T minus(T t1, T t2) {
Object v;
Class<?> clazz = t1.getClass();
if (clazz == Byte.class) {
v = (byte) (t1.byteValue() - t2.byteValue());
} else if (clazz == Short.class) {
v = (short) (t1.shortValue() - t2.shortValue());
} else if (clazz == Integer.class) {
v = t1.intValue() - t2.intValue();
} else if (clazz == Long.class) {
v = (long) (t1.longValue() - t2.longValue());
} else if (clazz == Float.class) {
v = (float) (t1.floatValue() - t2.floatValue());
} else if (clazz == Double.class) {
v = t1.doubleValue() - t2.doubleValue();
} else
throw new IllegalArgumentException();
return (T) v;
}

public static void main(String[] args) {
R<Double> rd = new R<Double>();
System.out.println(rd.plus(1.1, 1.2));
System.out.println(rd.minus(1.1, 1.2));

R<Float> rf = new R<Float>();
System.out.println(rf.plus(1.1f, 1.2f));
System.out.println(rf.minus(1.1f, 1.2f));

R<Integer> ri = new R<Integer>();
System.out.println(ri.plus(1, 2));
System.out.println(ri.minus(1, 2));
}
}
Apeipo 2010-06-19
  • 打赏
  • 举报
回复
5L那样的话,那我要个int难道又得 实现一个接口 - -;

alex44667416 2010-06-19
  • 打赏
  • 举报
回复
顶起!
Myxiao7_ 2010-06-19
  • 打赏
  • 举报
回复
顶上,寻求更好帮助

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧