场景2:
由于打断点的方法不是由自己程序打断点直接调用,而是由java原生类间接调用的,所以断点无效,示例如下:
`public class Pinyin4jUtil {
public static String getFirstSpell(String string) {
StringBuffer pybf = new StringBuffer();
char[] arr = string.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (int i = 0; i < arr.length; i++) {
if (arr[i] > 128) { //如果已经是字母就不用转换了
try {
//获取当前汉字的全拼
String[] temp = PinyinHelper.toHanyuPinyinStringArray(
arr[i], defaultFormat);
if (temp != null) {
if('乾' == arr[i]){
pybf.append(temp[1].charAt(0));// 取首字母
}else {
pybf.append(temp[0].charAt(0));// 取首字母
}
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
if (arr[i] >= 'a' && arr[i] <= 'z') {
arr[i] -= 32;
}
// if (arr[0] >= 'A' && arr[0] <= 'Z') {// 将大写转换为小写
// arr[0] += 32;
// }
pybf.append(arr[i]);
}
}
return pybf.toString();
}
public static void compare(List<WarehouseGoodsInfo> list){
Collections.sort(list, new Comparator<WarehouseGoodsInfo>() {
@Override
public int compare(WarehouseGoodsInfo o1, WarehouseGoodsInfo o2) {
return (getFirstSpell(o1.getGoodsName())).compareTo(getFirstSpell(o2.getGoodsName()));
}
});
}
public static void main(String[] args) {
List<WarehouseGoodsInfo> list = new ArrayList<>();
WarehouseGoodsInfo info = new WarehouseGoodsInfo();
info.setGoodsName("AAA");
list.add(info);
compare(list);
}
}`
在getFirstSpell方法打上断点,然后以Debug模式运行程序,此时不会进入到Deubg,而如果直接在Main方法中调用getFirstSpell方法,则会Debug到getFirstSpell方法内部