1

クラス変数 (ベクトル) を使用しようとしていますが、次の 2 つのエラーが発生します。

1

<identifier> expected
[javac]     bucketList = AppConfig.findVector (BUCKET_LIST_KEY);

getBucketList()メソッドの 2 はbucketList、クラスのグローバル変数として定義されているにもかかわらず、何らかの理由で null です。

コード

import java.util.Vector;

public class MyClass {
   ...
   private Vector<String> bucketList;

   public ThingieConfig() throws IOException {

     @SuppressWarnings("unchecked")
     bucketList = AppConfig.findVector (BUCKET_LIST_KEY);       
     if (bucketList != null && !bucketList.isEmpty()) {
       log_.debug ("Bucketlist defined");
       log_.debug("Buckets Defined : " + bucketList);
     }//if
   }//thingie

   public Vector getBucketList() {
    log_.debug ("Returning Vector " + bucketList);
    return bucketList;
    }//getBucketList

}//class
4

4 に答える 4

1

クラスのメンバー変数を定義しても、デフォルトの初期化が行われるわけではありません。デフォルトでは、null

メソッド宣言には戻り型が必要で、以下は無効です

public ThingieConfig() throws IOException 
于 2012-07-06T18:52:51.850 に答える
1
public ThingieConfig()

は有効な方法ではありません。戻り値の型はありませんが、クラス名はMyClassそうであるため、コンストラクターにすることはできません。

于 2012-07-06T18:52:56.867 に答える
1

bucketList を初期化する必要があります。

 private Vector<String> bucketList = new Vector<String>();

メソッドが何を返すか、または void を指定する必要があります。

public void ThingieConfig() throws IOException {
于 2012-07-06T18:54:59.680 に答える
0

他のすべてのエラーが修正されたら有効であると仮定bucketList = AppConfig.findVector (BUCKET_LIST_KEY);して、これを修正するために私がしたことを次に示します。

どこかで、bucketListを初期化する必要があります。
たとえば、 の最初の行に をThingieConfig()入れることができます
bucketList = new Vector<String>();。これは最適な場所ではないかもしれませんが、どこかに表示されるはずです。

また、すべてのメソッドには戻り値の型が必要です。だからライン

public ThingieConfig() throws IOException {

する必要があります

public Vector<String> ThingieConfig() throws IOException {

(bucketListを返すため)。

最後に、VectorJava では非推奨です。代わりに使用することを検討しArrayListます。

于 2012-07-06T19:45:36.923 に答える