JAVA中一个方法能同时返回2个值么
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中一个方法能同时返回2个值么相关的知识,希望对你有一定的参考价值。
JAVA中一个方法能同时返回2个值么
java中return语句不能同时返回两个值。java中return作为程序结束语句,return后直接会结束函数,同时返回一个返回值,这个返回值的类型是在函数方法上声明好了的,例如public int add(int a,int b){。。。;
return a+b;},所以return有且仅有一个返回值。
但如果想要返回两个以上的值:可以使用string类型进行拼接,取到这个拼接的字符串之后,进行拆分就可以了。 参考技术A 你直接放map里返回,设好对应的键值对,其实就是封装拆封,很好理解。 参考技术B 不能同时返回两个值,你可以将要返回的值放入对象中,或者把变量当参数传入函数,在函数中改变对象的值。
返回对象是用的比较多的方法本回答被提问者采纳 参考技术C 不能单独返回两个值,只能有一个return,可以用一个“,”联接起来,传过去,再去servlet里面分割。或者用数组,或者用list,都可以。。。 参考技术D 可以的,只要你用对象
java 如何能在一个方法中返回多个值?
最开始说一下我使用的解决办法:Pair 和 Triple
偶然看到这个问题,浏览量也很大,还是写一下我认为最好的办法吧,跟大家交流一下。
说一下前面的人答的方案,都可以解决问题,但是觉得不太好。您要是说 可以解决问题就行,那我无话可说。写代码如果只是为了完成任务,不考虑实现是否优雅 和咸鱼有什么区别呢。
数组明显不合适,数组适合放同一类型的数据,当然,你可以使用List<Object>,用Object 放结果,调用方需要知道Object的实际类型并做强制转换,不够优雅,差评
Map<String,Object> 是一种能解决问题的做法,使用Object 来放结果也存在调用方需要知道其实际类型并做强转的问题,用key 作区分,方法调用者需要知道方法内部的key ,即使使用全局变量做key 也不够优雅
自定义对象,新建一个类,例如 public class DoubleResult<A, B>getter; allArgsConstructor;、public class TripleResult<A, B, C>getter; allArgsConstructor;
,效果棒棒的
接下来要说的 Pair 和Triple 就是上面第三种方案的实现。org.apache.commons.lang3.tuple.Pair,org.apache.commons.lang3.tuple.Triple 是commons-lang包里的两种元组类型。Pair<L,R>可以存两个数据,Triple<L,M,R> 可以存三个,再多 那么考虑一下你的方法是否可以拆一下。
简单说一下他们的用法吧。
Pair 初始化:
例:Pair.of("a","b");
或:
Pair<Object,Object> pair = new Pair<Object, Object>()@Override
public Object getLeft()
return null;
@Override
public Object getRight()
return null;
@Override
public Object setValue(Object value)
return null;
;
Triple 初始化:
或:
@Override
public Object getLeft()
return null;
@Override
public Object getMiddle()
return null;
@Override
public Object getRight()
return null;
;
Pair 获取内容:
pair.getKey();pair.getValue();
Triple 获取内容:
triple.getMiddle();
triple.getRight();
另外org.apache.commons.lang3.tuple 包下还有ImmutablePair、ImmutableTriple、MutablePair、MutableTriple 分别对应两种结构的不可变和可变类型,大家可以自行探索。
java中如果想返回多个值的话,可以采用数组和集合进行存储,然后返回集合或者数组即可。其中数组用来封装基本数据类型的数据,集合用来封装对象数据。可以根据返回值的实际类型来选择容器。 参考技术B 比如方法是
public List Test()
.......
List list = new ArrayList();
list.add(你要的值1);
list.add(你要的值2);
下面依次类推
最后
return list;
当然,你也可以用数组等保存,最后返回就可以了。本回答被提问者和网友采纳 参考技术C public class NewClass
public static void main(String[] args)
int[] array = 0,1;
System.out.println(a(array)[0]);
System.out.println(a(array)[1]);
public static int[] a(int[] m)
int[] Black = new int[2];
Black[0] = 12;
Black[1] = 13;
return Black;
当然,要返回3个量时,可以把数组array的元素增加为3个,类似的,引用方法a(array[2]),即可返回第三个量。 参考技术D 定义一个存数据的类,里面的成员变量按需定义。然后让那方法返回类型为那个类,在方法里面给自定义类的对象成员变量赋值。返回该对象
以上是关于JAVA中一个方法能同时返回2个值么的主要内容,如果未能解决你的问题,请参考以下文章