我可以在多行上对Java方法名称进行文本换行吗?

时间:2018-02-26 16:14:50

标签: java spring-data-jpa

我知道你的第一反应是"为什么你要这样做,你的方法名称显然是荒谬的"但这是因为我使用Spring Boot JPA,您可以使用方法名称通过反射为您构建查询(这太棒了)。但是当基于几个不同的列查询并且实体变量具有较长的名称时,方法名称最终会很长且难以阅读,所以我想知道是否有一种方法可以将它分成多行?

目前我有类似的东西(这个问题简化了):

dt

我想在我的代码中更像是:

public List<Employee> findByFirstNameAndLastNameAndAgeBetweenAndBirthdayBefore(String firstName, String lastName, Integer minAge, Integer maxAge, Date maxBirthday);

这一切都可能吗?

3 个答案:

答案 0 :(得分:3)

method nameidentifier,由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>