我可以在java中通过引用传递值吗
代码片段我可以在java中通过引用传递值吗,java,android,arraylist,parse-platform,pass-by-value,Java,Android,Arraylist,Parse Platform,Pass By Value,代码片段 public void parsequery() { ParseQuery<ParseObject> query = ParseQuery.getQuery("Products"); query.whereEqualTo("StoreID", StoreID); query.findInBackground(new FindCallback<ParseObject>() { public vo
public void parsequery()
{
ParseQuery<ParseObject> query = ParseQuery.getQuery("Products");
query.whereEqualTo("StoreID", StoreID);
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> objects, ParseException e) {
if (e == null) {
for(int j=0; j<array.size();j++){
ParseQuery<ParseObject> query1 = ParseQuery.getQuery("Products");
c = array.get(j);
Log.d("C",""+c);
query1.whereEqualTo("SubCategory", c);
query1.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> objects1, ParseException e) {
if (e == null) {
productList.clear();
Log.d("Inner LOOP",""+objects1.size());
for(int i=0; i<objects1.size();i++)
{
SingleRow temp1 = new SingleRow(objects1.get(i).getString("Name"),objects1.get(i).getString("Description"),objects1.get(i).getInt("Price"),objects1.get(i).getString("Store"),objects1.get(i).getObjectId(),1);
productList.add(temp1);
}
productList temp11 = new productList(productList);
productList1.add(temp11);
}else{
Log.d("score", "Error: " + e.getMessage());
}
}
});
}
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
for(int k =0; k<array.size();k++){
Log.d("ProductList22",""+productList1.get(k).getProductList());
ArrayList<SingleRow> temp2 = productList1.get(k).getProductList();
SubcategorySinglerow temp = new SubcategorySinglerow(array.get(k),temp2);
categoryList.add(temp);
bool=true;
}
myList.addHeaderView(header, null, false);
Log.d("categoryListAdapter", ""+categoryList);
listAdapter = new MyListAdapter(getActivity(), categoryList);
myList.setAdapter(listAdapter);
layout.setVisibility(View.GONE);
myList.setVisibility(View.VISIBLE);
}
}, 5000);
} else {
Log.d("score", "Error: " + e.getMessage());
}
}
});
}
public void parsequery()
{
ParseQuery=ParseQuery.getQuery(“产品”);
查询:whereEqualTo(“StoreID”,StoreID);
findInBackground(新的FindCallback(){
公共void done(列出对象,parsee异常){
如果(e==null){
对于(int j=0;j java不是通过值,实际上不是。java中所有类变量都是引用。把它们看作C++指针(它们通常指向指针,但现在不必要的细节)。。因此,您通过值传递指针,这与通过引用传递指向的值是一样的。如果更改引用中的值,它将被全局更改。唯一的例外是基本数据类型-int、boolean、double等,因为它们不是引用
现在有一些类是不可变的-没有函数可以更改它们的内部值。对于这些类,您可以通过传递一个数据结构来轻松绕过它,该数据结构包含您想要作为实例变量的实际数据。您可能可以使您的变量成为该类的成员
或者你可以
class MyValue {
public int val;
}
MyValue v = new MyValue();
v.val = 1;
// In other class
void modify(MyValue v) {
v.val = 2;
}
在java中,一切都是通过值传递的,甚至是引用。如果你将一个对象传递给一个方法,你可以在method@TheLostMind我知道java是按值传递的。那么有没有其他方法可以让我设置数据。@ScaryWombat:你不能“传递对象”,因为“对象”在java中不是值。没有“对象类型"在Java中——只有基元类型和引用类型。@newacct让我们将其重新表述为扩展不可修改的对象的任何内容。我在每个for循环后通过清除它来设置变量中的值。是否有其他方法来传递值,以便我传递每个productlist1的特定值。在Java中看到的所有变量,如MycLass foo;-它们是引用。不是对象。对象引用“Java不是按值传递的,不是真的。”Java就是按值传递的。