Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.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_Android - Fatal编程技术网

Java 如何通过在类成员函数中将私有变量作为参数传递来重写它?

Java 如何通过在类成员函数中将私有变量作为参数传递来重写它?,java,android,Java,Android,如何通过在类成员函数中将私有变量作为变量传递来重写它 例如: public class SampleActivity extends Activity { private ImageView image1 = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Overrid

如何通过在类成员函数中将私有变量作为变量传递来重写它

例如:

public class SampleActivity extends Activity {
    private ImageView image1 = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    protected void onResume() {
        super.onResume();
        this.onUpdate(image1);
    }

    private void onUpdate(ImageView image) {
        image = new ImageView(this); // I would like to override member variable image1
        // update image1 parameters
    }
};
在上面的示例中,不会更新image1(保持为null)

我的实施:

public class SampleActivity extends Activity {
    private ImageView image1 = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    protected void onResume() {
        super.onResume();
        image1 = new ImageView();
        this.onUpdate(image1);
    }

    private void onUpdate(ImageView image) {
        // update image1 parameters
    }
};
在示例2中,我需要在每次onUpdate函数之前进行初始化。假设我想动态分配私有变量,我应该怎么做


是否有更好的实施方案?(例如,像C#一样传递“Ref”以便可以重写?

在Java中,所有参数都是按值传递的。这意味着在被调用的方法中,
image1
的值不能更改;只能更改引用的本地副本。你可以这样做:

@Override
protected void onResume() {
    super.onResume();
    image1 = onUpdate();
}

private ImageView onUpdate() {
    ImageView image = new ImageView(this); // I would like to override member variable image1
    // update image parameters
    return image;
}
public class SampleActivity extends Activity {
private ImageView image1 = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
protected void onResume() {
    super.onResume();
    this.onUpdate();
}

private void onUpdate() {
    image = new ImageView(this); // I would like to override member variable image1
    // update image1 parameters
    image.invalidate(); //invalidate the imageview so that the changes take place.
}
};

在Java中,所有参数都是按值传递的。这意味着在被调用的方法中,
image1
的值不能更改;只能更改引用的本地副本。你可以这样做:

@Override
protected void onResume() {
    super.onResume();
    image1 = onUpdate();
}

private ImageView onUpdate() {
    ImageView image = new ImageView(this); // I would like to override member variable image1
    // update image parameters
    return image;
}
public class SampleActivity extends Activity {
private ImageView image1 = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
protected void onResume() {
    super.onResume();
    this.onUpdate();
}

private void onUpdate() {
    image = new ImageView(this); // I would like to override member variable image1
    // update image1 parameters
    image.invalidate(); //invalidate the imageview so that the changes take place.
}
};

java中没有什么比引用更好的了

在这种情况下,可以使用getter和setter


java中没有什么比引用更好的了

在这种情况下,可以使用getter和setter


如果我理解正确,您不需要将输入参数添加到您的
onUpdate
,因为您已经有了一个引用(
private-ImageView-image1=null;
)。试着这样做:

@Override
protected void onResume() {
    super.onResume();
    image1 = onUpdate();
}

private ImageView onUpdate() {
    ImageView image = new ImageView(this); // I would like to override member variable image1
    // update image parameters
    return image;
}
public class SampleActivity extends Activity {
private ImageView image1 = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
protected void onResume() {
    super.onResume();
    this.onUpdate();
}

private void onUpdate() {
    image = new ImageView(this); // I would like to override member variable image1
    // update image1 parameters
    image.invalidate(); //invalidate the imageview so that the changes take place.
}
};

如果我理解正确,您不需要将输入参数添加到您的
onUpdate
,因为您已经有了一个引用(
private-ImageView-image1=null;
)。试着这样做:

@Override
protected void onResume() {
    super.onResume();
    image1 = onUpdate();
}

private ImageView onUpdate() {
    ImageView image = new ImageView(this); // I would like to override member variable image1
    // update image parameters
    return image;
}
public class SampleActivity extends Activity {
private ImageView image1 = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
protected void onResume() {
    super.onResume();
    this.onUpdate();
}

private void onUpdate() {
    image = new ImageView(this); // I would like to override member variable image1
    // update image1 parameters
    image.invalidate(); //invalidate the imageview so that the changes take place.
}
};

这个答案可能对您有用:尝试在更新(ImageView image1)方法中使用
This.image1=image1
。尽管如此,您可以更改其子类中的变量值,除非它被声明为private或final。此答案可能对您有用:尝试在更新(ImageView image1)方法中使用
This.image1=image1
。尽管如此,您可以更改其子类中的变量值,除非它声明为private或final。是的,我认为这是更好的实现或设计。是的,我认为这是更好的实现或设计。我这样做是因为我有几个成员变量要动态分配。我试图减少代码中的冗余,之所以这样做是因为我有几个成员变量需要动态分配。我试图减少代码中的冗余。