【问题标题】:check for naming convention in java检查java中的命名约定
【发布时间】:2010-04-14 10:14:20
【问题描述】:

通过java反射如何检查方法名是否在camelCase中? 例如

import java.lang.reflect.*;

   public class TestClass {
      private int simpleMethod(
       Object p, int x) throws NullPointerException
      {
         if (p == null)
            throw new NullPointerException();
         return x;
      }

      public static void main(String args[])
      {
         try {
           Class cls = Class.forName("method1");

            Method methlist[] 
              = cls.getDeclaredMethods();
            for (int i = 0; i < methlist.length;
               i++) {  
               Method m = methlist[i];
               System.out.println("name= " + m.getName());

            }
         }
         catch (Throwable e) {
            System.err.println(e);
         }
      }
   }

这里我得到了方法名称 simpleMethod 和 main 我必须检查这些名字是否用驼峰命名。

【问题讨论】:

  • 驼峰式。喜欢这种表达方式。

标签: java reflection


【解决方案1】:

这个问题定义不明确。很容易检查一串字母是否以小写字母 ([a-z][a-zA-z]*) 开头,或者在大写字母所在的位置切分它们(参见例如How do I convert CamelCase into human-readable names in Java?)并验证它们是否是某个给定字典中的单词,诸如此类,但是除非你被告知在哪里寻找大写字母,否则几乎不可能检查一个字符串是否是语义上正确的驼峰式大小写。

  • bitterAFlop 是合适的骆驼案吗?也许应该是bitTeraflop
  • getLinenUmber 呢? (是的!"umber" 是一个词!)
  • 其他语言的单词呢?

【讨论】:

【解决方案2】:

使用正则表达式检查它是否匹配 camelCase。相关答案:What Perl regex can match CamelCase words?

【讨论】:

  • 不,这对我没有帮助。这些名字 main、getURL 等呢?
  • 这个怎么样? [a-z]+[a-zA-Z0-9]*
  • 但是如果有人写了 simplemethod,我必须返回它不在 camelCase 中。
  • 拿一本字典。然而,这将是很多工作。祝你好运:)
  • 在这种情况下,您还必须拆分驼峰式单词 (stackoverflow.com/questions/773303/splitting-camelcase) 并检查这些单词是否在字典中。
猜你喜欢
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
  • 2018-01-14
  • 2011-02-26
  • 1970-01-01
相关资源
最近更新 更多