我正在尝试使用此代码为标准 Status 属性添加新的 XParameter
import net.fortuna.ical4j.model.Calendar;
import net.fortuna.ical4j.model.Component;
import net.fortuna.ical4j.model.Property;
import net.fortuna.ical4j.model.parameter.XParameter;
import org.apache.commons.io.IOUtils;
import com.example.common.util.ical.ICalUtil;
import java.io.FileInputStream;
import java.io.IOException;
public class TestICal {
public static void main(String[] args) throws IOException {
String content = IOUtils.toString(new FileInputStream("/tmp/taskA.ics"));
Calendar task = ICalUtil.parse(content);
Component vtodo = task.getComponent(Component.VTODO);
Property prop = vtodo.getProperty(Property.STATUS);
prop.getParameters().add(new XParameter("X-TEST-PARAM", "TEST-VALUE")); // java.lang.UnsupportedOperationException
}
}
但是在执行过程中会引发以下异常
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableCollection.add(Collections.java:1016)
at net.fortuna.ical4j.model.ParameterList.add(ParameterList.java:157)
at TestICal.main(TestICal.java:18)
在调试器中,我可以看到add()
调用了内部 ical4j 包方法java.util.Collections$UnmodifiableRandomAccessList
,实际上由于某种原因我在 API 文档中找不到,并且实现了java.util.List
该属性无法删除或替换,我看不到允许替换或添加另一个参数列表的方法。
所以现在我认为该字段不能有参数,至少如果使用 ical4j。
任何想法?