这个是java NumberFormat 类中的源代码,各位大虾可不可以帮我解释一两个算法呢。急急急急
我们要上去讲几个精髓。可是我看都看不懂??由于不能全部贴出来,所以我是截取的。我在eclipse里面复制的!可不可以帮我解释下主要的算法,感激不进。publicabstr...
我们要上去讲几个精髓。可是我看都看不懂??由于不能全部贴出来,所以我是截取的。我在eclipse里面复制的!可不可以帮我解释下主要的算法,感激不进。
public abstract class NumberFormat extends Format {
public static final int INTEGER_FIELD = 0;
public static final int FRACTION_FIELD = 1;
public StringBuffer format(Object number,
StringBuffer toAppendTo,
FieldPosition pos) {
if (number instanceof Long || number instanceof Integer ||
number instanceof Short || number instanceof Byte ||
(number instanceof BigInteger &&
((BigInteger)number).bitLength() < 64)) {
return format(((Number)number).longValue(), toAppendTo, pos);
} else if (number instanceof Number) {
return format(((Number)number).doubleValue(), toAppendTo, pos);
} else {
throw new IllegalArgumentException("Cannot format given Object as a Number");
}
}
public Number parse(String source) throws ParseException {
ParsePosition parsePosition = new ParsePosition(0);
Number result = parse(source, parsePosition);
if (parsePosition.index == 0) {
throw new ParseException("Unparseable number: \"" + source + "\"",
parsePosition.errorIndex);
}
return result;
}
//============== Locale Stuff =====================
=======================privates===============================
private static NumberFormat getInstance(Locale desiredLocale,
int choice) {
String[] numberPatterns = (String[])cachedLocaleData.get(desiredLocale);
if (numberPatterns == null)
ResourceBundle resource = LocaleData.getLocaleElements(desiredLocale);
numberPatterns = resource.getStringArray("NumberPatterns");
cachedLocaleData.put(desiredLocale, numberPatterns);
}
DecimalFormatSymbols symbols = new DecimalFormatSymbols(desiredLocale);
int entry = (choice == INTEGERSTYLE) ? NUMBERSTYLE : choice;
DecimalFormat format = new DecimalFormat(numberPatterns[entry], symbols);
if (choice == INTEGERSTYLE) {
format.setMaximumFractionDigits(0);
format.setDecimalSeparatorAlwaysShown(false);
format.setParseIntegerOnly(true);
} else if (choice == CURRENCYSTYLE) {
format.adjustForCurrencyDefaultFractionDigits();
}
return format;
}
NumberFormat 它的核心是什么呢,我不知道哪个是它的核心,无从下手,因为代码不能全部粘贴进去,所以截取了一点点。可以帮我解释下它的函数!谢谢 展开
public abstract class NumberFormat extends Format {
public static final int INTEGER_FIELD = 0;
public static final int FRACTION_FIELD = 1;
public StringBuffer format(Object number,
StringBuffer toAppendTo,
FieldPosition pos) {
if (number instanceof Long || number instanceof Integer ||
number instanceof Short || number instanceof Byte ||
(number instanceof BigInteger &&
((BigInteger)number).bitLength() < 64)) {
return format(((Number)number).longValue(), toAppendTo, pos);
} else if (number instanceof Number) {
return format(((Number)number).doubleValue(), toAppendTo, pos);
} else {
throw new IllegalArgumentException("Cannot format given Object as a Number");
}
}
public Number parse(String source) throws ParseException {
ParsePosition parsePosition = new ParsePosition(0);
Number result = parse(source, parsePosition);
if (parsePosition.index == 0) {
throw new ParseException("Unparseable number: \"" + source + "\"",
parsePosition.errorIndex);
}
return result;
}
//============== Locale Stuff =====================
=======================privates===============================
private static NumberFormat getInstance(Locale desiredLocale,
int choice) {
String[] numberPatterns = (String[])cachedLocaleData.get(desiredLocale);
if (numberPatterns == null)
ResourceBundle resource = LocaleData.getLocaleElements(desiredLocale);
numberPatterns = resource.getStringArray("NumberPatterns");
cachedLocaleData.put(desiredLocale, numberPatterns);
}
DecimalFormatSymbols symbols = new DecimalFormatSymbols(desiredLocale);
int entry = (choice == INTEGERSTYLE) ? NUMBERSTYLE : choice;
DecimalFormat format = new DecimalFormat(numberPatterns[entry], symbols);
if (choice == INTEGERSTYLE) {
format.setMaximumFractionDigits(0);
format.setDecimalSeparatorAlwaysShown(false);
format.setParseIntegerOnly(true);
} else if (choice == CURRENCYSTYLE) {
format.adjustForCurrencyDefaultFractionDigits();
}
return format;
}
NumberFormat 它的核心是什么呢,我不知道哪个是它的核心,无从下手,因为代码不能全部粘贴进去,所以截取了一点点。可以帮我解释下它的函数!谢谢 展开
2个回答
展开全部
楼主贴的代码一点也没有涉及到format的核心,都是个外围调用。
还是希望楼主能静下心来好好读读这些源码,对OODP(面向对象设计与编程)的理解可加深很多啊。
祝楼主好运!
-----------
再补充下, 想起一个好方法, 楼主可以写个例子, 运行,再在Eclipse里以debug方式跟踪进去,看看那些代码具体是怎么执行的。
这个过程很美,以前自己研究Hibernate框架就是那样开始的,像看一部长篇小说那样。
祝福楼主。
还是希望楼主能静下心来好好读读这些源码,对OODP(面向对象设计与编程)的理解可加深很多啊。
祝楼主好运!
-----------
再补充下, 想起一个好方法, 楼主可以写个例子, 运行,再在Eclipse里以debug方式跟踪进去,看看那些代码具体是怎么执行的。
这个过程很美,以前自己研究Hibernate框架就是那样开始的,像看一部长篇小说那样。
祝福楼主。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
抽象类,三个函数。要说那个?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询