Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使*运算符在java中使用泛型变量如果我知道变量是数值型的_Java_Generic Programming - Fatal编程技术网

如何使*运算符在java中使用泛型变量如果我知道变量是数值型的

如何使*运算符在java中使用泛型变量如果我知道变量是数值型的,java,generic-programming,Java,Generic Programming,这是我的通用类。我试着在main中创建并调用length方法,然后我得到传递给构造函数的值是否为整数。如果这三个参数都是双精度的,则可以。我也试着用*运算符代替Math.pow,但它也不起作用,因为*对于参数N是未定义的。所以。。。基本上,如果我知道泛型变量是数值类型-“Number”,我该如何对它们进行乘法 公共类测试{ 公共氮x; 纽约公共图书馆; 公共N z; 公共测试(N arg1、N arg2、N arg3) { 如果(!(arg1 instanceof Number)| |!(arg

这是我的通用类。我试着在main中创建并调用length方法,然后我得到传递给构造函数的值是否为整数。如果这三个参数都是双精度的,则可以。我也试着用*运算符代替Math.pow,但它也不起作用,因为*对于参数N是未定义的。所以。。。基本上,如果我知道泛型变量是数值类型-“Number”,我该如何对它们进行乘法

公共类测试{
公共氮x;
纽约公共图书馆;
公共N z;
公共测试(N arg1、N arg2、N arg3)
{
如果(!(arg1 instanceof Number)| |!(arg2 instanceof Number)| |!(arg3 instanceof Number))
{
}
其他的
{
System.out.println(“OK”);
这个.x=arg1;
这个.y=arg2;
这个.z=arg3;
}
}
公共双倍长度()
{
返回Math.sqrt(Math.pow((double)x,2)+Math.pow((double)y,2)+Math.pow((double)z,2));
}
}
主要内容:
System.out.println(新测试(2.56898,5.45,4.41).length());//好啊
System.out.println(新测试(2.56898,5,4).length());//例外情况

您可以只指定泛型的子类型,例如

public class Test<N extends Number> {
...
}

如果type参数必须是
Number
的子类型,则应使用
Test
。然后,您可以在
Number
实例上调用适当的方法(例如
x.doubleValue()
)。
public class Test<N extends Number> {
...
}
public double length() {
    return Math.sqrt(Math.pow(x.doubleValue(), 2) + Math.pow(y.doubleValue(), 2) + Math.pow(z.doubleValue(), 2));
}