我知道你的第一反应是"为什么你要这样做,你的方法名称显然是荒谬的"但这是因为我使用Spring Boot JPA,您可以使用方法名称通过反射为您构建查询(这太棒了)。但是当基于几个不同的列查询并且实体变量具有较长的名称时,方法名称最终会很长且难以阅读,所以我想知道是否有一种方法可以将它分成多行?
目前我有类似的东西(这个问题简化了):
dt
我想在我的代码中更像是:
public List<Employee> findByFirstNameAndLastNameAndAgeBetweenAndBirthdayBefore(String firstName, String lastName, Integer minAge, Integer maxAge, Date maxBirthday);
这一切都可能吗?
答案 0 :(得分:3)
method name是identifier,由IdentifierChars
组成。
IdentifierChars
被定义为以Java Letter开头,之后可能是Java Letter或Digit。这些在Character.isJavaIdentifierPart
(和isJavaIdentifierStart
)的Javadoc中描述:
如果满足以下任何条件,则字符可能是Java标识符的一部分 是的:
- 这是一个字母,它是一个货币符号(例如'$'),它是
- 连接标点字符(例如'_')
- 这是一个数字
- 是一个 数字字母(如罗马数字字符)
- 这是一个组合 标记
- 这是一个非间距标记
isIdentifierIgnorable(codePoint)
返回 真
isIdentifierIgnorable(int)
说(强调我的):
以下Unicode字符在Java标识符或Unicode标识符中是可忽略的:
- ISO控制字符不是空白
- '\ u0000'到'\ u0008'
- '\ u000E'到'\ u001B'
- '\ u007F'到'\ u009F'
- 具有FORMAT常规类别值的所有字符
所以不,你不能在方法名称中添加换行符。
答案 1 :(得分:1)
不,您不能在方法名称中加入换行符。
因为方法名称应该是有效的&#34; Java标识符&#34; (see "Method Declarations" from Java Language Specification)和&#34; Java标识符&#34;由Java字母或数字组成,但没有换行符(see "Identifiers" from Java Language Specification)
&#34; Java字母&#34;包括大写和小写ASCII拉丁字母AZ(\ u0041- \ u005a)和az(\ u0061- \ u007a),以及由于历史原因,ASCII下划线(_,或\ u005f)和美元符号($,或\ u0024)。 $字符只能用于机械生成的源代码,或者很少用于访问旧系统上预先存在的名称。
&#34; Java数字&#34;包括ASCII数字0-9(\ u0030- \ u0039)。
答案 2 :(得分:1)
嗯,这是一个无效的方法声明,Java不允许你将方法名称扩展到下一行,但即使这样做也不是一个好习惯。
我想你是因为长方法名称而尝试这样做,甚至Spring Data JPA文档也表明,如果你的方法名称越来越大,你可以考虑使用@Query
注释编写查询或使用Query DSL。 / p>