PROPOSAL: Multiline strings

rssh at gradsoft.com.ua rssh at gradsoft.com.ua
Sat Feb 28 19:46:05 PST 2009


AUTHOR(s): Ruslan Shevchenko

OVERVIEW:
 FEATURE SUMMARY:
   add multiline strings to java language.
 MAJOR ADVANTAGE:
   Possibility more elegant to write code part of codes in other languages,
  such as sql constructions or rendering of html components.
 MAJOR DISADVANTAGE
   I don't know
 ALTERNATIVES:
  use String "+=" operator.
  using groovy instead java in utility classes.

EXAMPLES

SIMPLE EXAMPLE:

  StringBuilder sb = new StringBuilder();
  sb.append("""select a from Area a, CountryCodes cc
                where
                   cc.isoCode='UA'
                  and
                   a.owner = cc.country
              """);
  if (question.getAreaName()!=null) {
     sb.append("""and
                  a.name like ?
               """);
     sqlParams.setString(++i,question.getAreaName());
  }

 instead:
  StringBuilder sb = new StringBuilder();
  sb.append("select a from Area a, CountryCodes cc\n");
  sb.append("where cc.isoCode='UA'\n");
  sb.append("and a.owner=cc.country'\n");
  if (question.getAreaName()!=null) {
     sb.append("and a.name like ?");
     sqlParams.setString(++i,question.getAreaName());
  }


DETAILS:
  Multiline strings are part of program text, which begin and ends
 by three double quotes. (as in groovy and scala) Text withing such
 brackets processed as multiline string with all rulles as normal Java
 string literals, except it can be multiline. After parsing multiline
 string is concatenation of lines with inserted value of system property
'line.separator' between thems.


COMPILATION:
 Multiline strings created and used in .class files exactly as ordinary
strings.

TESTING:
 Nothing special. add multiline strings to test-cases.

LIBRARY SUPPORT:
 None.
 (May be exists sence add simple template processing to standard library, but
  I think this is goal of next janguage iteration. Now exists many good
external
  frameworks, such as velocity: better wait and standartize support of
winner)

REFLECTIVE APIS: None

OTHER CHANGES: None

MIGRATION: None

COMPABILITY
 None

REFERENCES

 http://bugs.sun.com/view_bug.do?bug_id=4165111









More information about the coin-dev mailing list