2012-06-08 18 views
0

我正在嘗試爲BMC操作請求系統服務器編寫一個迷你插件。如何從Java列表中獲取值<E>?

filterAPICall 
public abstract List<com.bmc.arsys.api.Value> filterAPICall(ARPluginContext context, 
                 List<com.bmc.arsys.api.Value> pInValues) 
               throws com.bmc.arsys.api.ARExceptionDescription copied from interface: ARFilterAPIPluggable 

給定一組輸入值,處理它並返回一個輸出值列表。還提供了插件上下文和實例數據。

Specified by: 
filterAPICall in interface ARFilterAPIPluggable 

Parameters: 
context - Current context for this plugin call, like username etc. 
pInValues - input values 

Returns: 
output values 

Throws: 
com.bmc.arsys.api.ARException 

com.bmc.arsys.api.Value的描述是在這裏: http://www.javasystemsolutions.com/documentation/thirdparty/arapiv75/com/bmc/arsys/api/Value.html

現在,這裏是我的電話:

public List<Value> filterAPICall(ARPluginContext context, List<Value> pInValues) throws ARException{ 
     context.logMessage(pluginInfo, ARPluginContext.PLUGIN_LOG_LEVEL_INFO, "filterapiCall()"); 

     if (pInValues.size() == 0) 
      return null; 

     ArrayList<Value> outValues = new ArrayList<Value>(); 

     outValues.add(0, new Value(String.valueOf(InetAddresses.isInetAddress(String.valueOf(pInValues))))); 

     return outValues; 
    } 

出於某種原因

outValues.add(0, new Value(String.valueOf(InetAddresses.isInetAddress(String.valueOf(pInValues))))); 

不起作用。

我也試過:

outValues.add(0, new Value(String.valueOf(InetAddresses.isInetAddress(String.valueOf(pInValues.getValue()))))); 

但是編譯器說:

javac IPChecker.java 
IPChecker.java:30: cannot find symbol 
symbol : method getValue() 
location: interface java.util.List<com.bmc.arsys.api.Value> 
     outValues.add(0, new Value(String.valueOf(InetAddresses.isInetAddress(String.valueOf(pInValues.getValue()))))); 
                            ^
1 error 

任何想法?

感謝 托馬斯

回答

2

你應該迭代。

if (pInValues.size() == 0) 
    return null; 

ArrayList<Value> outValues = new ArrayList<Value>(); 

for(Value value : pInValues) { 
    outValues.add(0, new Value(String.valueOf(InetAddresses.isInetAddress(String.valueOf(value))))); 
} 

return outValues; 
+0

+1創意方面,oyeah! – GingerHead

1

pInValuesjava.util.ListList s沒有getValue()方法。

+0

對於'List','String'也沒有'valueOf()'方法。 – SimplyPanda

0

您將需要訪問List中的元素才能夠對其調用getValue()。試試:

outValues.add(0, new Value(String.valueOf(InetAddresses.isInetAddress(
    String.valueOf(pInValues.get(0).getValue()))))); 

這將翻譯第一個元素並將其添加到輸出列表中。要獲取所有元素,您需要迭代pInValues中的元素並將它們逐個轉換,將每個結果添加到輸出列表中