public String[] generateCodes(final String code, final String objectName, final String field, final Class<?> fieldType) {
        
        final String baseCode = getPrefix().isEmpty() ? code : getPrefix() + code;
        final List<String> codeList = new ArrayList<>();
        
        final List<String> objectNameList = Arrays.asList(generateObjectNameCodes(objectName));
        final List<String> fieldList = new ArrayList<>();
        buildFieldList(field, fieldList);
        
        if(Utils.isNotEmpty(field)) {
            // 最後のフィールド名のみを取得する
            int dotIndex = field.lastIndexOf('.');
            if(dotIndex > 0) {
                buildFieldList(field.substring(dotIndex + 1), fieldList);
            }
        }
        
        for(final String name : objectNameList) {
            addCodes(codeList, baseCode, name, fieldList);
        }
        
        addCodes(codeList, code, null, fieldList);
        
        if(fieldType != null) {
            addCode(codeList, code, null, fieldType.getName());
            
            if(Enum.class.isAssignableFrom(fieldType)) {
                // 列挙型の場合は、java.lang.Enumとしてクラスタイプを追加する。
                addCode(codeList, code, null, Enum.class.getName());
                
            } else if(fieldType.isArray()) {
                // 配列の場合は、"配列のクラスタイプ+[]"を追加する。
                Class<?> componentType = fieldType.getComponentType();
                addCode(codeList, code, null, componentType.getName() + "[]");
                addCode(codeList, code, null, "java.lang.Object[]");
            }
        }
        
        addCode(codeList, code, null, null);
        
        return codeList.toArray(new String[codeList.size()]);
    }
public String [ ] generateCodes ( final String code , final String objectName , final String field , final Class < ? > fieldType ) { final String baseCode = getPrefix ( ) . isEmpty ( ) ? code : getPrefix ( ) + code ; final List < String > codeList = new ArrayList < > ( ) ; final List < String > objectNameList = Arrays . asList ( generateObjectNameCodes ( objectName ) ) ; final List < String > fieldList = new ArrayList < > ( ) ; buildFieldList ( field , fieldList ) ; if ( Utils . isNotEmpty ( field ) ) { int dotIndex = field . lastIndexOf ( '.' ) ; if ( dotIndex > 0 ) { buildFieldList ( field . substring ( dotIndex + 1 ) , fieldList ) ; } } for ( final String name : objectNameList ) { addCodes ( codeList , baseCode , name , fieldList ) ; } addCodes ( codeList , code , null , fieldList ) ; if ( fieldType != null ) { addCode ( codeList , code , null , fieldType . getName ( ) ) ; if ( Enum . class . isAssignableFrom ( fieldType ) ) { addCode ( codeList , code , null , Enum . class . getName ( ) ) ; } else if ( fieldType . isArray ( ) ) { Class < ? > componentType = fieldType . getComponentType ( ) ; addCode ( codeList , code , null , componentType . getName ( ) + "[]" ) ; addCode ( codeList , code , null , "java.lang.Object[]" ) ; } } addCode ( codeList , code , null , null ) ; return codeList . toArray ( new String [ codeList . size ( ) ] ) ; }
キーの候補を生成する。
<p>コンテキストのキーの形式として、次の優先順位に一致したものを返す。

@param code 元となるメッセージのコード
@param objectName オブジェクト名（クラスのフルパス）
@param field フィールド名 （指定しない場合はnullを設定する）
@param fieldType フィールドのクラスタイプ（指定しない場合はnullを設定する）
@return