2012-06-02 121 views
1

我有一個服務接口,上面寫着這樣不能解析爲一個類型

package services; 

import domain.Items; 

public interface IItemsService extends IService { 

public final String NAME = "IItemsService"; 


/** Places items into the database */ 
public void storeItem(Items items); 




/** Retrieves items from the database 
* 
* @param category 
* @param amount 
* @param color 
* @param type 
* @return 
* @throws ClassNotFoundException 
*/ 
public Items getItems (String category, float amount, String color, String type) throws ItemNotFoundException, ClassNotFoundException; 

} 

而一個工廠,看起來像這樣...

package services; 
public class Factory { 



public Factory(){} 



@SuppressWarnings("unchecked") 
public IService getService(String name) throws ServiceLoadException { 
    try { 
     Class c = Class.forName(getImplName(serviceName)); 
     return (IService)c.newInstance(); 
    } catch (Exception e) { 
     throw new ServiceLoadException(serviceName + "not loaded"); 
    } 
} 



private String getImplName (String name) throws Exception { 
    java.util.Properties props = new java.util.Properties(); 
     java.io.FileInputStream fis = new java.io.FileInputStream("properties.txt"); 
      props.load(fis); 
       fis.close(); 
       return props.getProperty(serviceName); 
} 
} 

這應該是很簡單 - 但我一直收到兩個錯誤 - IService無法解析爲類型(在工廠和服務上),而且serviceName也無法解析爲工廠中的變量錯誤。我知道我缺少一些簡單的...

+0

那麼,你是否定義了IService?你沒有'顯示給我們。 – bmargulies

回答

1

關於類型的錯誤:如果IService不在包services,然後IItemService將不能訪問它,你將需要import some.package.name.IService

第二個答案很簡單:在getServicegetImplName方法中,該參數名爲name。在方法體中,您指的是serviceName。你可能應該在nameserviceName在他們每個人。

另一方面,如果您試圖訪問實例變量,請注意,在Java中,您必須先聲明所有實例變量,然後才能訪問(讀取/寫入)它們。你需要修改類如下:

public class Factory { 

    private String serviceName; 

    public Factory() {} 

    // other code 
} 
1

那麼第二個錯誤很簡單:有沒有一個變量叫serviceName。如果您認爲存在,請指出其聲明。我懷疑你意味着使用參數 - 在這種情況下,只需更改參數的名稱相匹配你想使用的名稱:

public IService getService(String serviceName) throws ServiceLoadException 

... 

private String getImplName (String serviceName) throws Exception 

這是一個非常簡單的錯誤 - 你應該想想位你的診斷讓你失望地爲自己工作。 (你也應該縮進你的代碼更理智,順便說一句。)

至於IService是失蹤 - 我們不知道在哪裏IService,就是要聲明,這使得它很難幫助你在這方面...

相關問題