Since in Java optional parameters are not possible, I tried to create 2 constructors.
JavaScript
x
public class Tts {
public Context context;
private final MediaPlayer _mediaPlayer;
private final CopyBarVisualizer _barTop;
private final CopyBarVisualizer _barBottom;
public Tts(Context context) {
this.context = context;
}
public Tts(Context context, MediaPlayer _mediaPlayer, BarVisualizer _barTop, BarVisualizer _barBottom) {
this.context = context;
this._mediaPlayer = _mediaPlayer;
this._barTop = (CopyBarVisualizer) _barTop;
this._barBottom = (CopyBarVisualizer) _barBottom;
}
}
Now my problems are the private properties. There I get the error
Variable ‘_mediaPlayer’ might not have been initialized
In another method, I want to check if the properties are set. But how can I avoid these errors?
Advertisement
Answer
If you want to solve the error problem, you can fix it with the code below; however, when the constructor initializes final fields, you can’t change them, so probably it’s better to remove the final keyword.
JavaScript
public class Tts {
public Context context;
private final MediaPlayer _mediaPlayer;
private final CopyBarVisualizer _barTop;
private final CopyBarVisualizer _barBottom;
public Tts(Context context) {
this(context, null, null, null); // to solve the error problem
}
public Tts(Context context, MediaPlayer _mediaPlayer, BarVisualizer _barTop, BarVisualizer _barBottom) {
this.context = context;
this._mediaPlayer = _mediaPlayer;
this._barTop = (CopyBarVisualizer) _barTop;
this._barBottom = (CopyBarVisualizer) _barBottom;
}
}