Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.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 - Fatal编程技术网

Java 方法的多个返回类型

Java 方法的多个返回类型,java,Java,有没有办法从int、String或double等方法获得不同的返回类型 我能想到的是使用泛型通配符,不确定 比如: public x m1(){ //implementation } x可以是int、string、long等,因为Java是静态类型的。您可以使用泛型或多态类型,但不能只返回任意类型(您可以返回Object…),您认为如何使用返回值 ??? value = m1() value的类型未知,您无法对其执行任何操作 但是,您可以考虑一些通用的强类型容器,类似于。ApacheComm

有没有办法从int、String或double等方法获得不同的返回类型

我能想到的是使用泛型通配符,不确定

比如:

public x m1(){
//implementation
}

x可以是int、string、long等,因为Java是静态类型的。您可以使用泛型或多态类型,但不能只返回任意类型(您可以返回
Object
…),您认为如何使用返回值

??? value = m1()
value
的类型未知,您无法对其执行任何操作


但是,您可以考虑一些通用的强类型容器,类似于。ApacheCommonsLang3有一个例子。

没有,因为Java是静态类型的。您可以使用泛型或多态类型,但不能只返回任意类型(您可以返回
Object
…),您认为如何使用返回值

??? value = m1()
value
的类型未知,您无法对其执行任何操作


但是,您可以考虑一些通用的强类型容器,类似于。ApacheCommonsLang3有,您可以拿它为例。

使用对象类作为返回类型,然后使用整数或字符串(包装器)类。因此,您可以使用对象的getClass()方法来标识其类。

使用对象类作为返回类型,然后使用整数或字符串(包装器)类。因此,在返回的点可以使用对象的getClass()方法来标识其类。

不,一个方法只能有一种返回类型。如果要返回不同类型的对象,可以返回
Object
,但在这种情况下仍然需要强制转换。在这种情况下,您也不能返回未固定的原语(即
int
double

泛型可能会有所帮助,因为它们隐式地添加了一些类型转换。 然而,取决于你想要实现什么,这可能不值得

我们使用的是这样的东西,例如:

class BasicBuilder<T extends BasicBuilder<T>> {
  private int value;

  public T setValue( int v ) {
    value = v;
     return (T)this;
  }
}

class ConcreteBuilder extends BasicBuilder<ConcreteBuilder> {
  //more here
}
classbasicbuilder{
私有int值;
公共T设置值(int v){
值=v;
返回(T)这个;
}
}
类ConcreteBuilder扩展了BasicBuilder{
//更多
}

这样,当我有一个
ConcreteBuilder
实例并在其上调用
setValue(…)
时,我将得到一个
ConreteBuilder
引用。请注意,只有在正确使用泛型且强制转换有效时,此方法才有效。

否,一个方法只能有一个返回类型。如果要返回不同类型的对象,可以返回
Object
,但在这种情况下仍然需要强制转换。在这种情况下,您也不能返回未固定的原语(即
int
double

泛型可能会有所帮助,因为它们隐式地添加了一些类型转换。 然而,取决于你想要实现什么,这可能不值得

我们使用的是这样的东西,例如:

class BasicBuilder<T extends BasicBuilder<T>> {
  private int value;

  public T setValue( int v ) {
    value = v;
     return (T)this;
  }
}

class ConcreteBuilder extends BasicBuilder<ConcreteBuilder> {
  //more here
}
classbasicbuilder{
私有int值;
公共T设置值(int v){
值=v;
返回(T)这个;
}
}
类ConcreteBuilder扩展了BasicBuilder{
//更多
}

这样,当我有一个
ConcreteBuilder
实例并在其上调用
setValue(…)
时,我将得到一个
ConreteBuilder
引用。请注意,只有在正确使用泛型且强制转换有效的情况下,此操作才有效。

您可以在HotSpot Java 6中使用泛型执行此操作,但这被认为是一个错误,Java 5.0和Java 7都不支持此操作

Java通常不支持上下文,但随着Java7中的隐含类型支持而不是Java8中的隐含类型支持,这种情况正在发生变化


常见的解决方法是在名称中指定类型。e、 g.通过使用
getInt()
getLong()
getDouble()
getDouble()
,可以在HotSpot Java 6中使用泛型实现这一点,但这被认为是一个bug,Java 5.0和Java 7都不支持这一点

Java通常不支持上下文,但随着Java7中的隐含类型支持而不是Java8中的隐含类型支持,这种情况正在发生变化


常见的解决方法是在名称中指定类型。e、 g.使用
getInt()
getLong()
getDouble()

将返回类型设置为
Object
,这可能有助于将返回类型设置为
Object
,这可能有帮助