序列

From Apache OpenOffice Wiki
Jump to: navigation, search




序列是一个 UNO 类型的值的同类集合,它具有可变数量的元素在最新的语言绑定中序列映射到数组。尽管 UNO 中的这些集合有时作为具有元素访问方法的对象实现(例如,通过 com.sun.star.container.XEnumeration 接口),但还是提供了序列类型,以便在远程性能相关的地方使用。

在 API 引用中通常使用尖括号来标注序列:

  // a sequence of strings is notated as follows in the API reference
  sequence< string > aStringSequence;


在 Java 中,可将序列视为数组。(但请勿使用 null 来表示空序列,而是要使用通过 new 创建的零长度数组。)另外需要注意的是,创建 Java 对象的数组时仅创建引用数组,而不分配实际的对象。因此,必须使用 new 创建数组本身,然后对每个单独的对象需要再次使用 new,并将新对象指定到数组。


PropertyValue 结构的空序列经常会用于 loadComponentFromURL

  // create an empty array of PropertyValue structs for loadComponentFromURL
  PropertyValue[] emptyProps = new PropertyValue[0];


使用包含 loadComponentFromURL() 的加载参数时需要使用 PropertyValue 结构的序列。loadComponentFromURL()com.sun.star.frame.XStorable 接口的可能参数值可以在服务 com.sun.star.document.MediaDescriptor 中找到。

  // create an array with one PropertyValue struct for loadComponentFromURL, it contains references only
  PropertyValue[] loadProps = new PropertyValue[1];
 
  // instantiate PropertyValue struct and set its member fields
  PropertyValue asTemplate = new PropertyValue();
  asTemplate.Name = "AsTemplate";
  asTemplate.Value = Boolean.TRUE;
 
  // assign PropertyValue struct to first element in our array of references to PropertyValue structs
  loadProps[0] = asTemplate;
 
  // load calc file as template
  XComponent xSpreadsheetComponent = xComponentLoader.loadComponentFromURL(
    "file:///X:/share/samples/english/spreadsheets/OfficeSharingAssoc.sxc",
    "_blank", 0, loadProps);


在OpenOffice.org Basic中,一个简单 Dim 即可创建一个空数组。

  'OpenOffice.org Basic
  Dim loadProps()  'empty array


结构序列是使用 new 和 Dim 创建的。

  'OpenOffice.org Basic
  Dim loadProps(0) as new com.sun.star.beans.PropertyValue 'one PropertyValue


在 C++ 中,有一个用于序列的类模板。空序列可以通过省略所需的元素数来创建。

  //C++
  Sequence< ::com::sun::star::beans::PropertyValue > loadProperties; // empty sequence


如果传递多个元素,则可以获得所需长度的数组。

  //C++
  Sequence< ::com::sun::star::beans::PropertyValue > loadProps( 1 );
  // the structs are default constructed
  loadProps[0].Name = OUString::createFromAscii( "AsTemplate" );
  loadProps[0].Handle <<= true;
 
  Reference< XComponent > rComponent = rComponentLoader->loadComponentFromURL(
  OUString::createFromAscii("private:factory/swriter"), 
  OUString::createFromAscii("_blank"), 
  0, 
  loadProps);
Content on this page is licensed under the Public Documentation License (PDL).
Personal tools
In other languages