JAVA将基本类型传递为函数调用的引用

时间:2018-09-07 10:40:21

标签: java pass-by-reference primitive-types

我是Java的新手。我需要在函数调用中传递原始类型值作为引用。我不想从函数返回i值,因为它已经返回了一些对象。

for (int i = 0; i < objects.size();) {
  // here it should fetch that object based on i manipulated in function
  Object obj = objects.get(i)
  Object node = someFunction(session,obj,i);
  // push node in nodes array
}
public Object someFunction(Session session,Object obj,int i){
   //manipulate i value based on condition
   if(true){
      i = i + 1;
   }else{
      i = i + 2;
   }
}

当JAVA在函数调用中使用按值传递时,如何实现此目标?

谢谢

3 个答案:

答案 0 :(得分:2)

在Java基本类型中,总是按值传递。要通过引用传递,您应该定义一个类并将原始类型放入其中。如果您传递Integer类,则该类无效,因为该类是不可变的,并且值不变。

答案 1 :(得分:1)

您可以使用类型int[]的奇异数组来快速解决并增加其内部值。那并不会改变数组本身,只会改变其内容。

答案 2 :(得分:1)

您知道Java流吗?使用流,您可以执行以下操作:

List<Object> result = objects.stream()
     .filter(object -> {/*add condition here*/})
     .map(object->{/*do something with object that match condition above*/})
     .collect(Collectors.toList()); 

您可以使用此机制根据特定条件收集和处理对象。

如果那没有帮助,也许使用迭代器?

Iterator<Object> it = objects.iterator();
while(it.hasNext()){
    Object node = someFunction(session,it);
}

public Object someFunction(Session session,Iterator i){
   //manipulate i value based on condition
   if(true){
      i.next();
   }else{
      i.next();
      i.next();
   }
}