рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ, рдХрдХрдбрд╝реА JVM 3.0.0 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЗрд╕ BDD рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд▓рдЪреАрд▓рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдФрд░ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рд╕рд╛рде рд╣реА рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рднреА рджреВрдВрдЧрд╛ред
рдХрдХрдбрд╝реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
Cucumber JVM рдХреЗ рддреАрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, Cucumber Expressions рдЕрдм рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬреЛ рдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рд╕рдмреНрд╕реНрдЯрд┐рдЯреНрдпреВрдЯ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рднрд╛рд╖рд╛ рд╣реИред рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рднрд╛рд╖рд╛ рдкрдардиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИ, рдЬреЛ рдХрдХрдбрд╝реА рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЪреАрд▓реЗрдкрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрднреА рднреА рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ:
# language: ru : : * 15 * "" * hello
рдЗрд╕рд╕реЗ рддрд░реНрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЪрд░рдгреЛрдВ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
@(" {int}") public void giveInt(Integer int1) { System.out.println(int1); } @(" {string}") public void giveString(String string) { System.out.println(string); } @(" {word}") public void giveWord(String string) { System.out.println(string); }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХрдХрдбрд╝реА рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ рдореЗрдВ рд╕рдВрдЪрд░рд┐рдд рдореВрд▓реНрдп рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рджреЛ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реИрдХреЗрдЯ рд╣реЛрддреЗ рд╣реИрдВред
рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░, рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧрд┐рдпрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:
- {} рдЗрдВрдЯ
- {рдлреНрд▓реЛрдЯ}
- {} рд╕реНрдЯреНрд░рд┐рдВрдЧ
- {рдкрдж}
- {} Biginteger
- {} BigDecimal
- {} рдмрд╛рдЗрдЯ
- {} рд▓рдШреБ
- {} рд▓рд╛рдВрдЧ
- {} рдбрдмрд▓
{string} рдПрдХ рдЙрджреНрдзреГрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдФрд░ {word} рдПрдХ рднреА рд╢рдмреНрдж рдмрд┐рдирд╛ рдЙрджреНрдзрд░рдг рдХреЗ (рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдХреЗрд╡рд▓ рд▓реИрдЯрд┐рди рдЕрдХреНрд╖рд░реЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╢рдмреНрджреЛрдВ рдХреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ {рд╢рдмреНрдж} рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред
рдЖрдк рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд▓реЛрдХрд▓рдбреЗрдЯ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рдлреАрдЪрд░ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
# language: ru : : * 01.06.2018
@(" {localdate}") public void ___(LocalDate localdate) { System.out.println(localdate.format(DateTimeFormatter.ofPattern("dd-MM-yyyy"))); }
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЧреЛрдВрдж рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреИрдХреЗрдЬ рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ TypeRegistryConfigurer рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
public class TypeRegistryConfiguration implements TypeRegistryConfigurer { @Override public Locale locale() {
TypeRegistryConfigurer рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╡рд░реНрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдХрдХрдбрд╝реА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рдЖрдкрдХреЛ рдХреЛрд╖реНрдардХ рдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкрд╛рда рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ:
@("Hello, world(s)!") public void getHello() { System.out.println("Hello world!"); }
рдЖрдк рдХреЛрд╖реНрдардХ рдХреЗ рдЕрдВрджрд░ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдХреЗрд╡рд▓ рд▓реИрдЯрд┐рди рд╡рд░реНрдгрдорд╛рд▓рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ)ред
рд╡реИрдХрд▓реНрдкрд┐рдХ рдкрд╛рда рд╕реНрд▓реИрд╢ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
@("/ ") public void getAlternative() { System.out.println("Hello world!"); }
# language: ru : : * *
рдЖрдк рдмреИрдХрд╕реНрд▓реИрд╢ рдХреЗ рд╕рд╛рде {} рдФрд░ () рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк рдПрдХ рд╣реА рдЪрд░рдг рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдирд┐рдпрдорд┐рдд рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдФрд░ рдХрдХрдбрд╝реА рдХреЗ рднрд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдПрдХреНрд╕рд╕реНрдЯреНрд░реАрдо рдкрд░рд┐рддреНрдпрд╛рдЧ
рдХрдХрдбрд╝реА рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдФрд░ XStreamsConverters рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрдЪрд░рд┐рдд рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХрдХрдбрд╝реА рдХреЗ рддреАрд╕рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ XStreamsConverters рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред
XStreamConverters рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдФрдЪрд┐рддреНрдп рдЦрд░рд╛рдм рдкреНрд░рд▓реЗрдЦрди, рддреГрддреАрдп-рдкрдХреНрд╖ рдСрдмреНрдЬреЗрдХреНрдЯ рдореИрдкрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рдФрд░ рдЬрд╛рд╡рд╛ 9 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдХрдореА рд╣реИред
рдиреЛрдЯрдкреНрд░рд╕реНрддреБрддрд┐ рдкрд░рд┐рд╕реАрдорди, рдкреНрд░рд╛рд░реВрдк, рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдФрд░ XStream рд╕реЗ рдЕрдиреНрдп рдПрдиреЛрдЯреЗрд╢рди рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЕрдм рдЖрдкрдХреЛ ParameterType рдпрд╛ DataTableType рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
DataTable
рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рднреА рдкрд░рд┐рд╡рд░реНрддрди рдЖрдпрд╛ рд╣реИред
рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рдХрдХрдбрд╝реА 3 рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдХреЙрд▓рдо рдХреЛ рд╕реВрдЪреА, рджреЛ рдХреЙрд▓рдо рд╕реЗ рдорд╛рдирдЪрд┐рддреНрд░, рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рд╕рдВрднрд╛рд▓рддреА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЖрдк рдбреЗрдЯрд╛ рдХреЛ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ: рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдЗрдВрдЯреЗрдЧрд░, рдлреНрд▓реЛрдЯ, рдбрдмрд▓, рдмрд╛рдЗрдЯ, рд╢реЙрд░реНрдЯ, рд▓реЙрдиреНрдЧ, рдмрд┐рдЧрдЗрдВрдЯрд░ рдпрд╛ рдмрд┐рдЧрдбрд┐рдорд▓ред
рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА DataTable рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ, рдЬреИрд╕рд╛ рдХрд┐ рдПрдХ рдХрд╕реНрдЯрдо рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдХрдирд╡рд░реНрдЯрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
# language: ru : DataTable : | | | 09.02.1887 | | | | 23.02.1890 |
User.java import java.time.LocalDate; public class User { private String firstName; private String lastName; private LocalDate birthDay; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public LocalDate getBirthDay() { return birthDay; } public void setBirthDay(LocalDate birthDay) { this.birthDay = birthDay; } @Override public String toString() { return "User{" + "firstName='" + firstName + '\'' + ", lastName='" + lastName + '\'' + ", birthDay=" + birthDay + '}'; } }
@(" ") public void ___(List<User> users) { System.out.println(users); }
рдХрдиреНрд╡рд░реНрдЯрд░ рдХреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдореЗрдВ:
public class TypeRegistryConfiguration implements TypeRegistryConfigurer { @Override public Locale locale() { return new Locale("ru"); } @Override public void configureTypeRegistry(TypeRegistry typeRegistry) {
рд╕реНрдЯреЗрдк рд╣реБрдХ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ
рдПрдХ рдФрд░ рдирд╡рд╛рдЪрд╛рд░ рдкреВрд░реНрд╡ рдФрд░ рдмрд╛рдж рдХреЗ рдХрджрдо рд╣реИред рдЕрдм рдЖрдк рд╣реБрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ / рдпрд╛ рдмрд╛рдж рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЪрд░рдг рд╣реБрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрддрд░ рд╣реБрдХ рдХреЗ рд╕рдорд╛рди рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ:
- рдЯреИрдЧ рдХреЗрд╡рд▓ рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реБрдХ рдкрд░ рд▓рдЯрдХрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ;
- рдЖрдк рд╣реБрдХ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдХреНрд░рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ;
- рдЖрдлреНрдЯрд░рд╕реНрдЯреЗрдк рдХреЛ рддрдм рднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рднрд▓реЗ рд╣реА рдЬрд┐рд╕ рдЪрд░рдг рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдмреНрд░реЗрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред
# language: ru : @hooks : , @only_scenario_hooks : @only_step_hooks :
рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рднрд▓реЗ рд╣реА рдЖрдкрдиреЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ XStream рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реЛ рдФрд░ рдХрдХрдбрд╝реА рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЗ рд╕рд╛рде, рдпрд╣ рдЫреЛрдЯреЗ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдореИрдВ рдпрд╣ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдХрдХрдбрд╝реА рд╕рдорд░реНрдерд┐рдд рдФрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реИ, рдФрд░ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рддреА рд╣реИрдВред
рдЕрдкрдбреЗрдЯ 09/23/2018рдЖрдЬ, рдХрдХрдбрд╝реА 4.0.0 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЕрдм рд░реВрд╕реА рднрд╛рд╖рд╛ рдХреЛ рдХрдХрдбрд╝реА рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рднреА рдХрд┐ рдореИрдВрдиреЗ {string} рдФрд░ {word} рдХреЗ рд╕рд╛рде рдЬреЛ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦрд╛ рдерд╛ рд╡рд╣ рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ {рд╢рдмреНрдж} рдореЗрдВ рдЕрдм рдХреЛрдИ рднреА рдЧреИрд░-рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рдЪрд░рд┐рддреНрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЪрд░рдг рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп рд╕рдВрдШрд░реНрд╖ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ:
# language: ru : : * "" * hello
@(" {string}") public void giveString(String string) { System.out.println(string); } @(" {word}") public void giveWord(String string) { System.out.println(string); }
рд╕рдВрджрд░реНрдн:
тЖТ
рд▓реЗрдЦ рд╕реЗ рдЙрджрд╛рд╣рд░рдгтЖТ
рдХрдХрдбрд╝реА JVM рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдореЗрд░рд╛ рд▓реЗрдЦ