0 0

关于java泛型5

鉴于描述原来的问题有点麻烦,我举个简单的例子
假如我现在要计算两个数字A+B+A*B+A/B(这两个数字类型相同,但其类型可以是int,float,long,double等,或者要求它们是Integer,Float,Long,Double也可以)
可以将计算方法封装到一个独立的类
为了便于维护,我想只写一个运算逻辑,也就是A+B+A*B+A/B

有阵子没碰java了,不知道这问题是我把原来的知识忘了,还是java那鸡肋的泛型本身的局限

问题补充:
oky 写道
指定返回值的类型应该就行了

public <T> T methodName(Class<T> clazz, ...)


return clazz.cast(result);

以前没用过Class的case方法,一看源码
    public T cast(Object obj) {
	if (obj != null && !isInstance(obj))
	    throw new ClassCastException();
	return (T) obj;
    }

这样看来的话,clazz.case(result)只是加了检查的(T)result;
另外,问题的关键在于,怎么把两个数字传进来,还有如何进行加乘除等运算

2012年2月12日 00:41

5个答案 按时间排序 按投票排序

0 0

采纳的答案

	public static <T extends Number> double caculate(T a, T b) {
		double d = a.doubleValue() + b.doubleValue() + a.doubleValue() * b.doubleValue()
				+ a.doubleValue() / b.doubleValue();
		return d;
	}

2012年2月13日 08:28
0 0

public static <T extends Number> Number caculate(T a, T b) {
		if (a instanceof Integer) {
			return (Number) (a.intValue() + b.intValue());
		}
	}

2012年2月13日 18:13
0 0

public static <T extends Number> Number caculate(T a, T b) {
if (a instanceof Integer) {
return (Number) (a.intValue() + b.intValue());
}
}

2012年2月13日 16:57
0 0

我觉得最好还是写一个同名方法用long和double参数重载好些。例如:

public long method(long a,long b){}
public double mehtod(double a,double b){}

2012年2月12日 16:49
0 0

指定返回值的类型应该就行了

public <T> T methodName(Class<T> clazz, ...)


return clazz.cast(result);

2012年2月12日 09:09

相关推荐

    java 泛型方法使用示例

    Java 泛型是Java SE 5.0引入的一...以上就是关于Java泛型方法的基本介绍和使用示例,希望对你有所帮助。如果你想要进一步了解或实践,可以参考提供的`GenericMethod.java`源代码文件,或者查阅`Java.jpg`中的相关图片。

    关于java泛型的讲解

    通过理解和熟练运用这些规则和特性,你可以更有效地利用Java泛型来编写安全、高效和可维护的代码。在实际开发中,泛型能够帮助你构建更加灵活的容器类,比如集合框架中的 `ArrayList&lt;T&gt;`、`HashMap, V&gt;` 等,它们都...

    Java泛型的用法及T.class的获取过程解析

    Java泛型的用法及T.class的获取过程解析 Java泛型是Java编程语言中的一种重要特性,它允许开发者在编写代码时指定类型参数,从而提高代码的灵活性和可读性。本文将详细介绍Java泛型的用法 及T.class的获取过程解析...

    JAVA泛型加减乘除

    这是一个使用JAVA实现的泛型编程,分为两部分,第一部分创建泛型类,并实例化泛型对象,得出相加结果。 第二部分用户自行输入0--4,选择要进行的加减乘除运算或退出,再输入要进行运算的两个数,并返回运算结果及...

    很好的Java泛型的总结

    Java泛型机制详解 Java泛型是Java语言中的一种机制,用于在编译期检查类型安全。Java泛型的出现解决了Java早期版本中类型安全检查的缺陷。Java泛型的好处是可以在编译期检查类型安全,避免了运行时的...

    Java泛型三篇文章,让你彻底理解泛型(super ,extend等区别)

    Java 泛型详解 Java 泛型是 Java SE 5.0 中引入的一项特征,它允许程序员在编译时检查类型安全,从而减少了 runtime 错误的可能性。泛型的主要优点是可以Reusable Code,让程序员编写更加灵活和可维护的代码。 ...

    Java泛型应用实例

    Java泛型是Java编程语言中的一个强大特性,它允许我们在定义类、接口和方法时指定类型参数,从而实现代码的重用和类型安全。在Java泛型应用实例中,我们可以看到泛型如何帮助我们提高代码的灵活性和效率,减少运行时...

    java泛型的使用

    本压缩包包含了一些关于Java泛型的实例,旨在帮助学习者深入理解和应用这一特性。 泛型的主要目标是允许在编译时检查类型安全,并且所有的强制转换都是自动和隐式的,提高了代码的重用率。在Java中,泛型主要体现在...

    关于java泛型的小测试(wildcard,erasure,covariant,raw type)

    Java泛型是Java编程语言中的一个关键特性,它允许在定义类、接口和方法时指定类型参数,从而增强了代码的类型安全性和重用性。在本小测试中,我们将探讨几个与Java泛型相关的概念:通配符(Wildcards)、消除...

    关于java基础的泛型的练习

    Java泛型是Java SE 5.0引入的一个重要特性,它极大地增强了代码的类型安全性和可读性。泛型在编程中的应用广泛,特别是在集合框架中,使得我们可以在编译时就检查类型,避免了不必要的类型转换,并且提高了代码的...

    java泛型技术之发展

    Java泛型是Java编程语言中的一个关键特性,它在2004年随着Java SE 5.0的发布而引入,极大地增强了代码的类型安全性和重用性。本篇文章将深入探讨Java泛型的发展历程、核心概念以及其在实际开发中的应用。 1. **发展...

    1.java泛型定义.zip

    1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1....

    java 泛型接口示例

    下面我们将详细探讨Java泛型接口的相关知识点。 1. **泛型接口的定义** 泛型接口的定义方式与普通接口类似,只是在接口名之后添加了尖括号`&lt;T&gt;`,其中`T`是一个类型参数,代表某种未知的数据类型。例如: ```java...

    4.java泛型的限制.zip

    4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip...

    java 泛型类的类型识别示例

    综上所述,虽然Java泛型在编译后会进行类型擦除,但通过上述技巧,我们仍然能够在运行时获得关于泛型类实例化类型的一些信息。在实际开发中,这些方法可以帮助我们编写更加灵活和安全的代码。在示例文件`GenericRTTI...

    关于C#、java泛型的看法

    在编程世界中,C#和Java都是广泛应用的高级编程语言,它们都支持泛型这一强大的特性,以提高代码的类型安全性和重用性。本文将深入探讨C#和Java在泛型实现上的异同,帮助开发者更好地理解和利用这两种语言的泛型功能...

Global site tag (gtag.js) - Google Analytics