Package org.instancio

Interface Selector

All Superinterfaces:
ConvertibleToScope, DepthSelector, GroupableSelector, ScopeableSelector, TargetSelector, WithinScope

A selector that can be:
  • grouped with other selectors
  • narrowed down using Scope
  • converted to Scope
Since:
1.2.0
See Also:
  • Method Summary

    Modifier and Type
    Method
    Description
    atDepth(int depth)
    Restricts this selector's target(s) to the specified depth.
    within(Scope... scopes)
    Specifies the scope for this selector in order to narrow down its target.

    Methods inherited from interface org.instancio.ConvertibleToScope

    toScope
  • Method Details

    • atDepth

      ScopeableSelector atDepth(int depth)
      Restricts this selector's target(s) to the specified depth.

      When a selector atDepth(N) is converted toScope(), the semantics of within(Scope...) method still hold, meaning: at depth equal to or greater than N.

      Specified by:
      atDepth in interface DepthSelector
      Parameters:
      depth - the depth at which selector applies
      Returns:
      selector restricted to the specified depth
      Since:
      3.0.0
    • within

      GroupableSelector within(Scope... scopes)
      Specifies the scope for this selector in order to narrow down its target.

      For example, given the following classes:

      
       record Phone(String countryCode, String number) {}
      
       record Person(Phone home, Phone cell) {}
       

      setting home and cell phone numbers to different values would require differentiating between two field(Phone::number) selectors. This can be achieved using scopes as follows:

      
       Scope homePhone = field(Person::home).toScope();
       Scope cellPhone = field(Person::cell).toScope();
      
       Person person = Instancio.of(Person.class)
           .set(field(Phone::number).within(homePhone), "777-88-99")
           .set(field(Phone::number).within(cellPhone), "123-45-67")
           .create();
       

      See Selector Scopes section of the user guide for details.

      Specified by:
      within in interface ScopeableSelector
      Specified by:
      within in interface WithinScope
      Parameters:
      scopes - one or more scopes to apply
      Returns:
      a selector with the specified scope
      Since:
      1.3.0