JVM标识符的记录

先引入一下我们team的一个需求处理

https://note.youdao.com/ynoteshare1/index.html?id=a262b6b15e67b9423b207d0cee11c5c3&type=note

其中用到了

 public boolean internalElementValid(String ln) {
        boolean flag = false;
        int ci = ln.indexOf('#');
        if (ci >= 0) {
            ln = ln.substring(0, ci);
        }
        ln = ln.trim();
        int n = ln.length();
        if (n != 0) {
            if ((ln.indexOf(' ') >= 0) || (ln.indexOf('\t') >= 0)) {
                log.error("Illegal configuration-file syntax");
                flag = true;
            }
            int cp = ln.codePointAt(0);
            if (!Character.isJavaIdentifierStart(cp)) {
                log.error("Illegal provider-service path: " + ln);
                flag = true;
            }
            for (int i = Character.charCount(cp); i < n; i += Character.charCount(cp)) {
                cp = ln.codePointAt(i);
                if (!Character.isJavaIdentifierPart(cp) && (cp != '.')) {
                    log.error("Illegal provider-service path: " + ln);
                    flag = true;
                }
            }
        }
        return flag;
    }
}

这个方法是干什么的我们分析一下。

拿出每一个字符的代码点(codePoint又可以称谓代码单元)然后每一个方法去判断是否符合javaIdentifieri,是否符合java可使用的标识符。

java标识符: 用来表示类名,变量名,方法名,类型名,数组名,文件名的有效字符序列称为标识符。

规则:

1.只有字母(区分大小写),下划线,美元符号和数字组成,长度不受限制。

注:字母包括英文26个字母 ,汉字,日文,朝鲜文,俄文,希腊字母等。

2.第一个字母不能是数字。

3.不能是关键字

关键字(50):abstract    assert    boolean    break    byte    case    catch    char    class    const    continue    default

do    double    else    enum    extends    final    finally    float    for    goto    if    implements    import    instanceof    

int    interface    long    native    new    package    private    protected    public    return    short    static    strictfp

super    switch    synchronized    this    throw    throws    transient    try    void    volatile    while

4.不能是true false null(尽管三个都不是关键字)--------------------- 

 

那么我是怎么知道这个方法的

如下:

在java.uti.ServiceLoader这个类中已经有过验证,

作为一次实践,也作为一次学习~

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值