Discuss / Java / 难度越来越大了,这一章跟前面的反射和异常处理联系非常紧密,需要大量用到前面的知识,看廖老师的例子慢慢理了一遍再敲出来

难度越来越大了,这一章跟前面的反射和异常处理联系非常紧密,需要大量用到前面的知识,看廖老师的例子慢慢理了一遍再敲出来

Topic source
// TODO:
				if (value instanceof String) {
					String s = (String) value;
					if (s.length()<range.min() || s.length()>range.max()) {
						throw new IllegalArgumentException("Invalid field: " + field.getName());
					}
				}
				else if (value instanceof Integer) {
					Integer n = (Integer) value;
					if (n<range.min() || n>range.max()) {
						throw new IllegalArgumentException("Invalid field: " + field.getName());
					}
				}
运行结果:

Person {Person: name=Bob, city=Beijing, age=20} checked ok.
Person {Person: name=, city=Shanghai, age=20} checked failed: java.lang.IllegalArgumentException: Invalid field: name
Person {Person: name=Alice, city=Shanghai, age=199} checked failed: java.lang.IllegalArgumentException: Invalid field: age

静谧伯爵

#2 Created at ... [Delete] [Delete and Lock User]
else if (value instanceof Integer) {
		Integer n = (Integer) value;

请问,这里为什么要用Integer,而不用int?

value是Object类

Object value = field.get(person);

Joker.fu_95

#4 Created at ... [Delete] [Delete and Lock User]

因为Object是class,int是基本数据类型,强转的话还是Integer好些


  • 1

Reply