1

私は Java が初めてで、警告について質問があります。

私の一般的なコード:

private Stack<ArrayList> stackFrame = new Stack<ArrayList>();
private ArrayList<Object> curBlocKList = new ArrayList<Object>();
...
curBlockList = stackFrame.pop();

私は得ています:

Parser.java:78: warning: [unchecked] unchecked conversion
found   : java.util.ArrayList
required: java.util.ArrayList<java.lang.Object>
    curBlockList = stackFrame.pop();

宿題に取り組んでいて、コンパイルと挿入でエラーが許可されていないため、警告なしで構文的にこれを機能させる方法がわかりません

@SurpressWarning("unchecked")

も許可されていません。

この警告を取り除くにはどうすればよいですか?

また、curBlocKList がスタックの現在のトップへの参照を保持するようにします。これは

curBlockList = stackFrame.pop();

または、他に何かする必要がありますか?

4

2 に答える 2

2

@SurpressWarning("unchecked")動作させるには、メソッド プロトタイプの前に配置する必要があります。

しかし、あなたは変えようとするべきです

private Stack<ArrayList> stackFrame = new Stack<ArrayList>();

の中へ

private Stack<ArrayList<Object>> stackFrame = new Stack<ArrayList<Object>>();
于 2010-10-09T22:45:43.587 に答える
1

Stack のパラメータ化内で ArrayList をパラメータ化する必要があります。また、ArrayList の代わりに List を使用することをお勧めします。実装ではなく、インターフェイスにプログラムする必要があります。

private Stack<List<?>> stackFrame = new Stack<List<?>>();
private List<?> curBlockList = new ArrayList<Object>();
于 2010-10-09T22:49:56.510 に答える