Java 将初始值设置为静态字段
我有一个类,其中一些变量是用Java 将初始值设置为静态字段,java,android,static,Java,Android,Static,我有一个类,其中一些变量是用静态final初始化的。这些变量有一个定义的初始值,该值在同一个类和另一个类中使用 现在,我希望这个变量的值取决于一个比例因子: 由此: class Ball { public static final float SPEED = 4.0f; //... 为此: class Ball { public static final float SPEED = 4.0f * scale_factor; //... s假定比例系数是另一个浮
静态final
初始化的。这些变量有一个定义的初始值,该值在同一个类和另一个类中使用
现在,我希望这个变量的值取决于一个比例因子:
由此:
class Ball {
public static final float SPEED = 4.0f;
//...
为此:
class Ball {
public static final float SPEED = 4.0f * scale_factor;
//...
s假定比例系数是另一个浮点数,其值从1.0到3.0
问题是,如果我这样做,我会得到以下错误:
The field SPEED cannot be declared static in a non-static inner type,
unless initialized with a constant expression
建议删除速度的静态修饰符。如果我这样做了,那么,我就不能在其他类中使用这个变量,因为它告诉我要使它成为静态的,以便能够使用它
更新--
public class SinglePlayerView extends View {
//...
public static float scale_factor;
//...
public SinglePlayerView(Context context) {
super(context);
scale_factor = setScreenScale();
}
public float setScreenScale() {
float scale = getResources().getDisplayMetrics().density;
return scale;
}
class Ball {
public float x, y, xp, yp, vx, vy;
public float speed = SPEED;
public static final double BOUND = Math.PI / 9;
public static final float SPEED = 4.0f;
public static final int RADIUS = 4;
public static final double SALT = 4 * Math.PI / 9;
public Ball() {
}
public Ball(Ball other) {
x = other.x;
y = other.y;
xp = other.xp;
yp = other.yp;
vx = other.vx;
vy = other.vy;
speed = other.speed;
mAngle = other.mAngle;
}
//...
我需要乘以比例因子的参数是速度
和半径
比例因子
也必须是静态
和最终
,并且必须出现在源文件中速度
的定义之前。比例因子
也必须是静态
和final
必须出现在源文件中SPEED
的定义之前。scale\u factor
也必须是static
和final
并且必须出现在源文件中SPEED
的定义之前。scale\u factor
也必须是static
和final
并且必须出现在源文件中SPEED
的定义之前。以下代码有效:
例如,a.java定义
public static final float y = get();
public static final float SPEED = 4.0f * y ;
public static float get() {
// TODO PROCESSiNG
return 3;
}
在ExampleB.java中,使用常量ExampleA.y和ExampleA.SPEED
HTH以下代码起作用:
例如,a.java定义
public static final float y = get();
public static final float SPEED = 4.0f * y ;
public static float get() {
// TODO PROCESSiNG
return 3;
}
在ExampleB.java中,使用常量ExampleA.y和ExampleA.SPEED
HTH以下代码起作用:
例如,a.java定义
public static final float y = get();
public static final float SPEED = 4.0f * y ;
public static float get() {
// TODO PROCESSiNG
return 3;
}
在ExampleB.java中,使用常量ExampleA.y和ExampleA.SPEED
HTH以下代码起作用:
例如,a.java定义
public static final float y = get();
public static final float SPEED = 4.0f * y ;
public static float get() {
// TODO PROCESSiNG
return 3;
}
在ExampleB.java中,使用常量ExampleA.y和ExampleA.SPEED
HTH我终于解决了:
只需将我需要的变量从Ball类传递到mainClass,并在那里给出我想要的值。然后我在主课堂上与他们一起学习,我可以在Ball课堂上给他们打电话。最后我解决了:
只需将我需要的变量从Ball类传递到mainClass,并在那里给出我想要的值。然后我在主课堂上与他们一起学习,我可以在Ball课堂上给他们打电话。最后我解决了:
只需将我需要的变量从Ball类传递到mainClass,并在那里给出我想要的值。然后我在主课堂上与他们一起学习,我可以在Ball课堂上给他们打电话。最后我解决了:
只需将我需要的变量从Ball类传递到mainClass,并在那里给出我想要的值。然后我在主类中使用它们,我可以从Ball类调用它们。只是一个更正:一些变量是用静态final初始化的
这些不是变量。关键字static
将它们转换为常量,不能再修改了。@Vyger好的,明白了。如果我需要更改值,但同时它要求它们是静态的,那么我如何更改值呢?只是一个更正:一些变量是用static final初始化的
这些不是变量。关键字static
将它们转换为常量,不能再修改了。@Vyger好的,明白了。如果我需要更改值,但同时它要求它们是静态的,那么我如何更改值呢?只是一个更正:一些变量是用static final初始化的
这些不是变量。关键字static
将它们转换为常量,不能再修改了。@Vyger好的,明白了。如果我需要更改值,但同时它要求它们是静态的,那么我如何更改值呢?只是一个更正:一些变量是用static final初始化的
这些不是变量。关键字static
将它们转换为常量,不能再修改了。@Vyger好的,明白了。如果我需要更改值,但同时它要求它们是静态的,那么我如何更改该值呢?我在另一个类中定义了scale\u factor
,即static float
。我不能把它定为最终值,因为它的值不是一个常数,它取决于屏幕的密度,我通过:getResources().getDisplayMetrics().density
伙计们,你们对我最近的评论有什么回答吗?你们最好的办法是在另一个类中使用一个函数getScaleFactor()
,然后根据需要乘以SPEED
。@Bathsheba你们能举个例子吗?在你们的另一个类中:public double getScaleFactor(){return 1.0;
。在Ball
中,使用OtherClass.getScaleFactor()*速度
;我在另一个类中将scale\u factor
定义为static float
。我不能把它定为最终值,因为它的值不是一个常数,它取决于屏幕的密度,我通过:getResources().getDisplayMetrics().density
伙计们,你们对我最近的评论有什么回答吗?你们最好的办法是在另一个类中使用一个函数getScaleFactor()
,然后根据需要乘以SPEED
。@Bathsheba你们能举个例子吗?在你们的另一个类中:public double getScaleFactor(){return 1.0;
。在Ball
中,使用OtherClass.getScaleFactor()*速度
;我在另一个类中将scale\u factor
定义为static float
。我不能把它定为最终值,因为它的值不是一个常数,它取决于屏幕的密度,我通过:getResources().getDisplayMetrics().density代码>伙计们,我最近的评论有什么答案吗?你们最好在另一个类中有一个函数getScaleFactor()
,该函数根据需要乘以SPEED
。@Bathsheba能给你们举个例子吗