gpt4 book ai didi

java - 如何在调用java中的默认构造函数之前设置变量?

转载 作者:行者123 更新时间:2023-12-01 16:28:08 25 4
gpt4 key购买 nike

我有以下类(class):

public class MyGLSurfaceView extends GLSurfaceView {

MyRenderer mRenderer;

public MyGLSurfaceView(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
init();
}

我想添加以下构造函数:

public MyGLSurfaceView(Context context, MyRenderer myRenderer) {

我尝试过:

public class MyGLSurfaceView extends GLSurfaceView {

MyRenderer mRenderer;
static AttributeSet attributeSet = null;

public MyGLSurfaceView(Context context, MyRenderer mRenderer) {
this.mRenderer = mRenderer;
this(context, attributeSet);

}

public MyGLSurfaceView(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
init();
}

但它不会让我在调用 MyGLSurfaceView 的默认构造函数之前设置渲染器.

如何在调用默认构造函数之前设置变量?

最佳答案

在设置任何字段之前,必须完成对任何基构造函数的调用(无论是在此类中还是在父类(super class)中定义)。因此,如果您需要在调用 init() 之前设置 mRenderer,最好将两个构造函数分开(如下所示):

public class MyGLSurfaceView extends GLSurfaceView {

MyRenderer mRenderer;
static AttributeSet attributeSet = null;

public MyGLSurfaceView(Context context, MyRenderer mRenderer) {
super(context, attributeSet);
this.mRenderer = mRenderer;
init();
}

public MyGLSurfaceView(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
init();
}
}

关于java - 如何在调用java中的默认构造函数之前设置变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62122565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com