這裏是一個FactoryBean創建您的字節數組:
public class ByteArrayFactoryBean extends AbstractFactoryBean<byte[]>{
@Override
public Class<?> getObjectType(){
return byte[].class;
}
private String data;
@Required
public void setData(final String data){
this.data = data;
}
@Override
protected byte[] createInstance() throws Exception{
final String[] tokens = data.split("\\s*,\\s*");
final byte[] output = new byte[tokens.length];
for(int i = 0; i < tokens.length; i++){
output[i] = Byte.decode(tokens[i]).byteValue();
}
return output;
}
}
用法:
<bean class="foo.bar.SomeBean">
<property name="bytes">
<list>
<bean class="foo.bar.ByteArrayFactoryBean">
<property name="data" value="0x03,0x4d" />
</bean>
</list>
</property>
</bean>
(註冊一個PropertyEditor
會比較正確的,但也更多的工作)
但是如果我理解你的評論對,你的實際問題是你不知道如何寫一個字符串與奇特的字節?您可以使用Unicode escapes:
System.out.println("H\u00e4\u00e4\u00e4\u00e4\u00e4hhh???");
輸出:
Hääääähhh???
你當然也可以在Spring XML文件中使用這個語法。
「它只是將字符串轉換成相應的字節數組」 那這個問題,因爲我不知道如何爲字符串類型STX(0x03h);) – foster 2011-02-23 09:02:38
你不能因爲你有UTF-8編碼XML文件雖然它適用於具有國家字符的字符串(例如中文),但不能使用任意字節。這就是爲什麼我建議你編寫自定義屬性編輯器,例如,讀取Base64編碼的字符串並將它們轉換爲字節。 – 2011-02-23 09:10:51