• Авторизация


Многострочные литералы в Java 6 10-06-2013 17:29 к комментариям - к полной версии - понравилось!


Через анотации:
http://www.adrianwalker.org/2011/12/java-multiline-string.html
Можно забацать анотацию в классе и запихнуть туда многострочный текст. Потом этот текст можно читать через попу.
Теперь я могу устроить революцию и свергнуть Spring!

А вот тут есть ещё один восхитительный хак:
http://blog.efftinge.de/2008/10/multi-line-string-literals-in-java.html
http://stackoverflow.com/questions/878573/java-multiline-string


// From:
// http://blog.efftinge.de/2008/10/multi-line-string-literals-in-java.html
// Takes a comment (/**/) and turns everything inside the comment to a string
// that is returned from S()
public static String S()
{
StackTraceElement element = new RuntimeException().getStackTrace()[1];
String name = element.getClassName().replace('.', '/') + ".java";
StringBuilder sb = new StringBuilder();
String line = null;
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream in = classLoader.getResourceAsStream(name);
String s = convertStreamToString(in, element.getLineNumber());
return s.substring(s.indexOf("/*") + 2, s.indexOf("*/"));
}

// From http://www.kodejava.org/examples/266.html
private static String convertStreamToString(InputStream is, int lineNum)
{
/*
* To convert the InputStream to String we use the BufferedReader.readLine()
* method. We iterate until the BufferedReader return null which means
* there's no more data to read. Each line will appended to a StringBuilder
* and returned as String.
*/
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();

String line = null;
int i = 1;
try
{
while ((line = reader.readLine()) != null)
{
if (i++ >= lineNum)
{
sb.append(line + "\n");
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
is.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}

return sb.toString();
}

public static void main(String[] args) throws Exception
{
String s = S(/*
Wow, we finally have
multiline strings in
Java! HOOO!
*/);
System.out.println(s);
}
вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Многострочные литералы в Java 6 | eugene20237 - Дневник eugene20237 | Лента друзей eugene20237 / Полная версия Добавить в друзья Страницы: раньше»