docs: public static String getPinyin(char c, PinyinFormat pinyinFormat) {
  		HanyuPinyinOutputFormat outputFormat = null;
  		boolean formatNotNull = $.notNull(pinyinFormat);
  		String ret = null;
  		if (formatNotNull) {
  			PinyinTONEFormat toneFormat = pinyinFormat.getToneFormat();
  			PinyinULetterFormat uLetterFormat = pinyinFormat.getuLetterFormat();
  			if ($.notNull(toneFormat)) {
  				outputFormat = new HanyuPinyinOutputFormat();
  				switch (toneFormat) {
  				case TONE_MARK:
  					outputFormat.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
  					break;
  				case TONE_NUMBER:
  					outputFormat.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER);
  					break;
  				case TONE_NONE:
  					outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  					break;
  				}
  			}
  			if ($.notNull(uLetterFormat)) {
  				outputFormat = $.isNull(outputFormat) ? new HanyuPinyinOutputFormat() : outputFormat;
  				switch (uLetterFormat) {
  				case U_AND_COLON:
  					outputFormat.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON);
  					break;
  				case U_UNICODE:
  					outputFormat.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
  					break;
  				case U_V:
  					outputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);
  					break;
  				}
  			}
  		}
  		String[] pys = null;
  		try {
  			pys = $.notNull(outputFormat) ? PinyinHelper.toHanyuPinyinStringArray(c, outputFormat)
  					: PinyinHelper.toHanyuPinyinStringArray(c);
  		} catch (Exception e) {
  			e.printStackTrace();
  		}
  
  		if ($.notEmpty(pys)) {
  			ret = pys[0];
  			int tempLen = ret.length() - 1;
  
  			if (formatNotNull) {
  				PinyinUpperFormat upperFormat = pinyinFormat.getUpperFormat();
  				PinyinCUTFormat cutFormat = pinyinFormat.getCutFormat();
  
  				if ($.notNull(upperFormat)) {
  					switch (upperFormat) {
  					case UPPER_ALL:
  						ret = ret.toUpperCase();
  						break;
  					case UPPER_FIRST_LETTER:
  						ret = String.valueOf(ret.charAt(0)).toUpperCase() + ret.substring(1);
  						break;
  					case UPPER_LAST_LETTER:
  						ret = ret.substring(0, tempLen) + String.valueOf(ret.charAt(tempLen)).toUpperCase();
  						break;
  					case UPPER_FIRST_LAST_LETTER:
  						ret = ret.length() > 2 ? String.valueOf(ret.charAt(0)).toUpperCase() + ret.substring(1, tempLen)
  								+ String.valueOf(ret.charAt(tempLen)).toUpperCase() : ret.toUpperCase();
  						break;
  					case UPPER_MIDDLE_LETTER:
  						ret = ret.length() > 2 ? String.valueOf(ret.charAt(0)) + ret.substring(1, tempLen).toUpperCase()
  								+ String.valueOf(ret.charAt(tempLen)) : ret.toLowerCase();
  						break;
  					}
  				}
  
  				if ($.notNull(cutFormat)) {
  					switch (cutFormat) {
  					case CUT_FIRST_LETTER:
  						ret = String.valueOf(ret.charAt(0));
  						break;
  					case CUT_LAST_LETTER:
  						ret = String.valueOf(ret.charAt(tempLen));
  						break;
  					case CUT_MIDDLE_LETTER:
  						ret = ret.length() > 2 ? ret.substring(1, tempLen) : ret;
  						break;
  					case CUT_FIRST_LAST_LETTER:
  						ret = ret.length() > 2 ? String.valueOf(ret.charAt(0)) + String.valueOf(ret.charAt(tempLen))
  								: ret;
  						break;
  					}
  				}
  
  			}
  		}
  		return $.notNull(ret) ? ret : String.valueOf(c);
  	}