どうもこんにちは。
現在、iアプリ向けプログラムを作成しています。
しかし、あるクラスだけが、インスタンスを作成できない(?)
ようです。
他のクラスの記述と、見比べても差がほぼありません。
コンストラクタの中に、何も書かないようにしたりしてもダメでした。
サンプルコードは、これです。
// ---------------------------------------------------------- //
Window window = new Window( 10, 15+(15*6),
D.WIN_FLAG_NOCONTROL, 8, 8, 8 );
System.out.println( "エフェクト"+ new Effect() );
//つまり、コンストラクタから参照が得られないのが、問題
Effect effect = new Effect();
System.out.println("effect:"+effect);
// ---------------------------------------------------------- //
まとめると、Windowクラスのインスタンスは、作れるのに、
Effectクラスは、作れないという事です。
new Effect()のところで、NullPointerException例外が、発生してしまいます。
下記は、Effectクラスのコンストラクタです。
//コンストラクタ
Effect()
{
g = MainCanvas.g;
nKey = MainCanvas.nKey;
}
特に変わったところは、ありません。
コンストラクタ内の二行を消しても、同じ結果でした。
もしかして、KVMが、壊れたとかでしょうか?
ヒープの容量も十分にあったので、それが問題では無いと思いますが、
どうでしょうか?
見直すポイントがあれば、教えて下さい。
お願いします。
No.1
- 回答日時:
Effectクラスのコンストラクタを空にしても、new Effect()でNullPointerExceptionが発生するというのならば、Effectが継承するスーパークラスのコンストラクタでNullPointerExceptionが発生しているくらいしか考えにくいと思いますが・・・。
NullPointerExceptionが発生した時のStacktraceを載せていただけますか?
この回答への補足
>Effectが継承するスーパークラスのコンストラクタで>NullPointerExceptionが発生しているくらいしか考えにくいと
>思いますが・・・。
という事は、Effectクラスは、特に継承させていませんので、
Objectクラスで、何か起こっている(?)という事になるのでしょうか?
>NullPointerExceptionが発生した時の
>Stacktraceを載せていただけますか?
という事で、下記の様にコードを記述してみました。
//---------------------------------------------------------- //
Effect effect = null;
try {
effect = new Effect();
System.out.println( "effect:"+ effect );
} catch( NullPointerException e ) {
System.out.println( "exception: " + e.getMessage() );
e.printStackTrace();
}
これが、出力された内容です。
exception: null
java.lang.NullPointerException
//----------------------------------------------------- //
e.printStackTrace()ですが、あまり良く機能をわかっていません。
iアプリの開発といえども、もっと詳しく出力できるのでしょうか?
ちなみに、開発に使用している環境は、Doja-4.1です。
以上です。よろしくお願いします。
No.2
- 回答日時:
iアプリということは、DoJaだと思いますが、
CLDC1.1にはWindowクラスもEffectクラスもAPIリファレンスには載っていません。
DoJa5.0APIリファレンスにも載っていないクラスなのですが。
もし、独自で作成されたクラスであるならば、新しいインスタンスが生成されないように、クラスに記載されているのではないでしょうか?
この回答への補足
回答ありがとうございます。
確かに、WindowとEffectは、独自に作りました。
ちなみに、新しいインスタンスが生成されない様にとは、
どういった状態のことなのでしょうか?
Singletonパターンの様に、コンストラクタをprivate指定している
わけではないです。
ちなみに、コンストラクタは、アクセス指定しませんでした。
試しに、public指定しましたが、結果は同じでした。
似たような例として、インスタンス生成の為に、
getInstance()みたいなメソッドを作ったわけでもありません。
以上です。
よろしくお願いします。
No.3
- 回答日時:
>ちなみに、新しいインスタンスが生成されない様にとは
クラスがabstract宣言されている場合、インスタンス化できませんので、
public abstract class Effect {
}
と宣言されていると、インスタンス化できなくなります。
お手数お掛けしました。
問題は、解決したようです。
ちなみに、Effectは、普通のクラス宣言でした。
またいつの日か、よろしくおねがいします。
No.4
- 回答日時:
StackTraceの内容って、それしか出ないんですか・・・KVMの仕様?
この出力結果を見る限りだと、NullPointerExceptionの発生箇所は
effect = new Effect();
だけでなく
System.out.println( "effect:"+ effect );
も候補になると思います。
EffectクラスはtoString()を実装していますか?
ありがとうございます。
問題は、解決しました!!
ちなみにEffectは、自動的にObjectクラスを継承している
はずですから、使えると思います。
StackTraceの貧弱さには、困りました・・・。
No.5ベストアンサー
- 回答日時:
Effectクラスのstaticな部分またはインスタンスフィールドでnull参照をしてしまう処理はないでしょうか?
各クラスのstatic部分の処理は一番最初にクラスが参照されるときに発生します。インスタンスフィールドが初期化される処理はコンストラクタが呼び出され、コンストラクタの中の処理に入る直前です。
回答ありがとうございます。
bgbgさんのご指摘に従って、
インスタンスフィールドの初期値設定を全て
初期化処理の時に行う様にしたところ、問題が解決しました。
ありがとうございます。
助かりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- 英語 長い一文の構造(主語や動詞などがどれか)を教えてください。 1 2023/03/12 16:13
- 英語 Having the window in a location that gives the bes 2 2023/03/09 11:51
- 化学 これって結構凄いことですよね?? 常温常圧で「超電導」になる物質を合成。 https://gigaz 2 2023/07/28 19:17
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- ガーデニング・家庭菜園 観葉植物店GHB Fukuoka Effectと、ゆくはし植物園とではどちらがお店大きいですか? 1 2023/02/01 15:15
- 英語 The current meta-analysis aimed to compare the eff 1 2022/10/23 18:58
- 英語 “The Law if Effect states that no planning is invo 1 2023/02/02 19:06
- その他(ゲーム) Tetris® Effect: Connected 1 2023/03/17 20:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
private static という変数の修飾
-
インスタンス参照でアクセスで...
-
複数の変数を宣言する時、同時...
-
VB.NET getとsetの概念がわかり...
-
C# インスタンスの破棄
-
変数名の付け方
-
String a = "a"; と String b =...
-
JavaのSingletonパターンのpriv...
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
オブジェクト参照がオブジェク...
-
エクセル(複数インスタンス)...
-
インスタンスを同じ名前で作成...
-
SQLを連続発行する時の正しい(?...
-
クラス型がインスタンス化され...
-
C#「オブジェクト参照が必要で...
-
抽象クラスのインスタンス生成...
-
「インスタンス」の意味をわか...
-
VB6.0のクラスで、自分自身のイ...
-
C#のメモリ解放についてご教授...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
複数の変数を宣言する時、同時...
-
private static という変数の修飾
-
VB.NET getとsetの概念がわかり...
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
C# インスタンスの破棄
-
newしないインスタンス?実体化...
-
SQLを連続発行する時の正しい(?...
-
「インスタンス」の意味をわか...
-
文字列を日付に変換でParseExce...
-
変数の参照でエラーが出てしま...
-
フォームの存在をチェックする方法
-
javaのクラスの作り方、エラー...
-
オブジェクト参照がオブジェク...
-
String a = "a"; と String b =...
-
エクセル(複数インスタンス)...
-
C#「オブジェクト参照が必要で...
-
他のファイルの変数参照
おすすめ情報