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。是的,我认为这是更好的实现或设计。是的,我认为这是更好的实现或设计。我这样做是因为我有几个成员变量要动态分配。我试图减少代码中的冗余,之所以这样做是因为我有几个成员变量需要动态分配。我试图减少代码中的冗余。