栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

FreeMarker代码分析(10)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

FreeMarker代码分析(10)

2021SC@SDUSC

**内容非常主观,可能出现错漏,慎重参考

_DelayedJoinWithComma.java

package freemarker.core;


public class _DelayedJoinWithComma extends _DelayedConversionToString {

    public _DelayedJoinWithComma(String[] items) {
        super(items);
    }

    @Override
    protected String doConversion(Object obj) {
        String[] items = (String[]) obj;
        
        int totalLength = 0;
        for (int i = 0; i < items.length; i++) {
            if (i != 0) totalLength += 2;
            totalLength += items[i].length();
        }
        
        StringBuilder sb = new StringBuilder(totalLength);
        for (int i = 0; i < items.length; i++) {
            if (i != 0) sb.append(", ");
            sb.append(items[i]);
        }
        
        return sb.toString();
    }

}

重写doConversion,用for循环记录items数组的长度,在每个元素后加“,”

_DelayedJQuote.java

package freemarker.core;

import freemarker.template.utility.StringUtil;


public class _DelayedJQuote extends _DelayedConversionToString {

    public _DelayedJQuote(Object object) {
        super(object);
    }

    @Override
    protected String doConversion(Object obj) {
        return StringUtil.jQuote(_ErrorDescriptionBuilder.toString(obj));
    }

}

引用父类的object,重写doConversion

_DelayedOrdinal.java

package freemarker.core;


public class _DelayedOrdinal extends _DelayedConversionToString {

    public _DelayedOrdinal(Object object) {
        super(object);
    }

    @Override
    protected String doConversion(Object obj) {
        if (obj instanceof Number) {
            long n = ((Number) obj).longValue();
            if (n % 10 == 1 && n % 100 != 11) {
                return n + "st";
            } else if (n % 10 == 2 && n % 100 != 12) {
                return n + "nd";
            } else if (n % 10 == 3 && n % 100 != 13) {
                return n + "rd";
            } else {
                return n + "th";
            }
        } else {
            return "" + obj;
        }
    }
    
}

是_DelayedConversionToString的子类,重写doConversion方法,用if语句来判断

_DelayedShortClassName.java

package freemarker.core;

import freemarker.template.utility.ClassUtil;

public class _DelayedShortClassName extends _DelayedConversionToString {

    public _DelayedShortClassName(Class pClass) {
        super(pClass);
    }

    @Override
    protected String doConversion(Object obj) {
        return ClassUtil.getShortClassName((Class) obj, true);
    }

}

是_DelayedConversionToString的子类,引用pClass,重写doConversion,返回ClassUtil的类名

_DelayedToString.java

package freemarker.core;

public class _DelayedToString extends _DelayedConversionToString {

    public _DelayedToString(Object object) {
        super(object);
    }

    public _DelayedToString(int object) {
        super(Integer.valueOf(object));
    }
    
    @Override
    protected String doConversion(Object obj) {
        return String.valueOf(obj);
    }
    
}

是_DelayedConversionToString的子类,引用object,重写doConversion

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/658644.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号