java 字符串文字筛选_拜托,Java。 最终是否支持多行字符串文字

java 字符串文字筛选

我了解Java语言的思想很难以向后兼容的方式进行维护。 我知道JDK API(例如集合)的想法很难打破。 是。

我不明白为什么Java 仍然没有多行字符串文字。

您多久编写一次这样的JDBC代码(或您想要嵌入到Java中的任何其他外部语言或标记,例如JSON或XML)?

try (PreparedStatement s = connection.prepareStatement("SELECT * "+ "FROM my_table "+ "WHERE a = b "
)) {...
}

怎么了

  • 语法正确性 ,即不要忘记在每行的末尾添加空格
  • 宿主语言的样式与外部语言的样式 ,请确保上面的代码看起来用Java格式看起来“不错”,但对于使用方服务器端则没有格式化
  • SQL注入 ,我们不是教导我们的下辈不要在SQL中执行这种字符串连接以防止SQL注入吗? 当然,以上内容仍然是安全的,但是是什么原因使经验不足的维护者无法嵌入用户输入呢?

今天,我正在使用Xtend编写一些代码, Xtend是一种非常有趣的语言,可以编译成Java源代码。 Xtend对模板非常有用(例如,用于生成jOOQ的Record1 – Record22 API)。 我注意到多行字符串的另一个非常好的功能:

无需逃脱!

Xtend中的多行字符串以三撇号终止。 例如

// Xtend
val regex = '''import java\.lang\.AutoCloseable;'''

是的,以上是有效的Java正则表达式。 匹配AutoCloseable类型的导入时,我在转义点。 我不必在普通字符串中执行繁琐的两次转义操作,就可以告诉Java编译器反斜杠实际上是反斜杠,而不是Java转换了以下字符:

// Java
String regex = "import java\\.lang\\.AutoCloseable;";

所以……转换为我们最初SQL示例,我真的很想写这个:

try (PreparedStatement s = connection.prepareStatement('''SELECT *FROM my_tableWHERE a = b'''
)) {...
}

具有很大的优势:字符串插值(甚至PHP都有)!

String tableName = "my_table";
int b = 1;
try (PreparedStatement s = connection.prepareStatement('''SELECT *FROM ${tableName}WHERE a = ${b}'''
)) {...
}

小但非常有效的改进

这将是非常小的(就语言复杂性预算而言:只是一个新令牌),但是对于我们所有人都在Java中嵌入外部语言(SQL,XML,XPath,Regex等)的非常有效的改进。 我们做了很多。 我们讨厌它。

它不必像Xtend的多行字符串文字那样强大( 它确实与用于格式设置和模板化表达式的空白管理结合在一起 )。 但这将是一个开始。

请把它作为新年的决议! :)

翻译自: https://www.javacodegeeks.com/2016/01/please-java-finally-support-multiline-string-literals.html

java 字符串文字筛选

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计散列表实现通讯录查找系统_[源码和文档分享]利用哈希表实现电话号码查询系统...

第一章 需求分析1.1 问题描述设计一个电话号码查询系统,为来访的客⼈提供各种信息查询服务。1.2 基本要求设计每个记录有下列数据项:电话号码、用户名、地址从键盘输入个记录,分别以电话号码和用户名为关键字建立不同散列表存储采用一定的方法…

C++基础(1)

【1】简述#include<>和#include" "的区别 答&#xff1a;前者直接从编译器指定的路径处搜索&#xff1b; 后者在程序当前的目录进行搜索&#xff0c;如果没有搜索到再从编译器指定的路径出搜索。 【2】简述##与#在define中的作用 答&#xff1a;1.宏定义中#…

java 存储数据到文件中_本机速度文件支持的“纯” Java大数据存储

java 存储数据到文件中动机 所有这一切始于意识到我买不起足够大的计算机。 音频处理需要大量的内存。 Audacity是一款出色的免费音频处理器&#xff0c;它使用文件支持的存储系统对其进行管理。 这是解决此类问题的常用方法&#xff0c;在这些问题中&#xff0c;我们存储大量信…

mysql每条sql以什么结束_一条 SQL 查询语句是如何执行的?

一条 SQL 查询语句是如何执行的&#xff1f;比如&#xff0c;你有个最简单的表&#xff0c;表里只有一个ID字段&#xff0c;在执行下面这个查询语句时mysql> select from T where ID10;我们只看到一个输入语句&#xff0c;返回一个结果&#xff0c;却不知道这个 SQL 语句在 …

C++基础(2)

【1】静态全局变量 1.通常情况下&#xff0c;静态全局变量的声明和定义放在源文件中&#xff0c;并且不能使用extern关键字将全局静态变量导出&#xff0c;作用域仅限于定义静态全局变量的文件内部。 2.如果头文件中声明静态全局变量&#xff0c;在声明的同时会被初始化&…

ROI区域图像叠加

#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2\opencv.hpp> using namespace cv; using namespace std;int main() {//1.加载两幅图片Mat src imread("风景.jpg"…

drill apache_使用Apache Drill REST API通过Node构建ASCII仪表盘

drill apacheApache Drill有一个隐藏的瑰宝&#xff1a;易于使用的REST接口。 该API可用于查询&#xff0c;分析和配置Drill引擎。 在此博客文章中&#xff0c;我将解释如何使用Brilled Contrib使用Drill REST API创建ascii仪表板。 ASCII仪表盘如下所示&#xff1a; 先决条…

mysql 8.0用doc修改密码_MYSQL8.0修改密码流程

MYSQL8.0修改密码流程1.以管理员身份打开cmd2.找到mysql 的安装路径bin文件的路径&#xff0c;3.输入net start mysql4.输入mysql -u root -p5.找到my.ini文件6.在my.ini里面的[mysqld]这一行后面添加 skip -grant-tables,保存文件&#xff0c;注意不是[mysql]7.输入mysqld --s…

颜色空间缩减color space reduction

颜色空间缩减公式 //---------------------------------【头文件、命名空间包含部分】-------------------------- // 描述&#xff1a;包含程序所使用的头文件和命名空间 //---------------------------------------------------------------------------------------…

运动基元_发现大量Java基元集合处理

运动基元在阅读博客文章5减少Java垃圾收集开销的技巧时 &#xff0c;我想起了一个名为Trove的小型Java收集库&#xff0c;该库“为Java提供了高速的常规和原始收集”。 我对将Trove应用到允许原语的集合而不是要求集合中的元素成为完整的引用对象的能力特别感兴趣。 我在这篇文…

python判断奇偶数字符串的拼接_Python字符串拼接方法总结

这篇文章主要介绍了Python字符串拼接的几种方法整理的相关资料,这里提供了五种方法及实现&#xff0c;需要的朋友可以参考下Python字符串拼接的几种方法整理第一种 通过加号()的形式print(第一种方式通过加号形式连接 &#xff1a; lovePython \n)第二种 通过逗号(,)的形式pr…

Split分离通道

#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2\opencv.hpp> using namespace cv; using namespace std;int main() {vector<Mat>cha;Mat b, g, r,dst;//1.加载两幅图片…

上下文异常中的上下文属性_在没有适当上下文的情况下引发异常是一种不良习惯...

上下文异常中的上下文属性Allison Anders等人的《四个房间》&#xff08;1995&#xff09;。 我不断重复同样的错误。 因此&#xff0c;该停止并制定规则以防止这种情况了。 错误不是致命的&#xff0c;但很烦人。 当查看生产日志时&#xff0c;经常会看到类似"File does…

最大公约数简便算法_求最大公约数的4种算法

for(z0; z<10000000; z) 循环只是为了增加程序的运行时间&#xff0c;让我们体会算法的时间复杂度。算法一&#xff1a;短除法想法&#xff0c;采用短除法找出2个数的所有公约数&#xff0c;将这些公因子相乘&#xff0c;结果就是2个数的最大公约数。【找公因子&#xff0c;…

java 编写代码_如果您在2015年编写过Java代码-这是您不容错过的趋势

java 编写代码去年我们有机会遇到的最有趣趋势的实用概述 在这篇文章中&#xff0c;我们回顾了构成我们2015年对话的5个主题和新发展。与其他许多年终总结保持较高水平的不同&#xff0c;我们将做一个更实际的操作不用流行语 。 好吧&#xff0c;没有太多*流行语。 与往常一样…

java自动生成合同_Java 7和Java 8之间的细微自动关闭合同更改

java自动生成合同Java 7的try-with-resources语句和与该语句一起使用的AutoCloseable类型的一个不错的功能是&#xff0c;静态代码分析工具可以检测到资源泄漏。 例如&#xff0c;Eclipse&#xff1a; 当您具有上述配置并尝试运行以下程序时&#xff0c;您将收到三个警告&…

Python学习(1)

1.str字符串操作 len(str) 计算字符串长度 str.replace(xxx,xxxx) 替换指定字符 str.upper()字符串转大写 str.lower()字符串转小写 str.strip()删除左右多余的空格 str.lstrip()删除左边多余的空格 str.rstrip()删除右边的空格 format(a,b,c) 传参显示 2.索引 out hello wo…

opencv求两张图像光流_光流(optical flow)和openCV中实现

转载请注明出处&#xff01;&#xff01;&#xff01;光流(optical flow)和openCV中实现光流的概念&#xff1a;是Gibson在1950年首先提出来的。它是空间运动物体在观察成像平面上的像素运动的瞬时速度。是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一…

swarm 和 k8s_Wildfly Swarm,朝着成熟和一小部分贡献

swarm 和 k8s我最近关注的项目之一是Wildfly Swarm 。 最终&#xff0c;在今年的JBoss BOF中的Devoxx期间&#xff0c;由于考虑与著名的Docker Swarm发生冲突&#xff0c;我的要求没有考虑更改项目名称。 那么什么是Wildfly Swarm&#xff1f; 简而言之&#xff0c;就是Wildfl…

python socket多线程 获取朋友列表_python socket多线程通讯实例分析(聊天室)

本文实例讲述了python socket多线程通讯方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;#!/usr/bin/evn python"""这是一个Socket多进程的例子(聊天服务端)"""import socketimport threading# 处理中文数据用的encoding "GBK…