开发者留下的wtf:
public static String toString(final Annotation a) {
final ToStringBuilder builder = new ToStringBuilder(a, TO_STRING_STYLE);
for (final Method m : a.annotationType().getDeclaredMethods()) {
if (m.getParameterTypes().length > 0) {
continue; //wtf?
}
想知道为什么 if( ) 后面跟了个continue......
可能是把后面的语句放到if里面执行, 最后返回builder.build();
return type.isPrimitive() || type.isEnum() || type.isAnnotation()
|| String.class.equals(type) || Class.class.equals(type);
判断两个对象相等或都为null时返回true,不需要处理异常, 关键代码:
private static boolean memberEquals(final Class<?> type, final Object o1, final Object o2) {
if (o1 == o2) {
return true;
}
if (o1 == null || o2 == null) {
return false;
}
非常典型的判断语句格式: 属性negeted : CharRange范围在 指定范围 之外 为true
public boolean contains(final CharRange range) { //判断range的范围start和end是否包含吗
Validate.isTrue(range != null, "The Range must not be null"); //验证是否为null
if (negated) {
if (range.negated) {
return start >= range.start && end <= range.end; //如果全部包含输入的范围,返回true
}
return range.end < start || range.start > end; //不全在输入的范围,返回false
}
if (range.negated) {
return start == 0 && end == Character.MAX_VALUE; //如果全包含,则判断start和end是否全部符合要求
}
return start <= range.start && end >= range.end; //前面的条件都不满足, 如果不在start和end之间返回true
}
一种产生hash值的方法:
public int hashCode() {
return 83 + start + 7 * end + (negated ? 1 : 0);
}
toString() 方法:
private transient String iToString; //私有化一个字符串, 不能被序列化, 仅用于toString()方法:
public String toString() {
if (iToString == null) {
final StringBuilder buf = new StringBuilder(4); //声明final, 不能修改
if (isNegated()) {
buf.append('^');
}
buf.append(start);
if (start != end) {
buf.append('-');
buf.append(end);
}
iToString = buf.toString();
}
return iToString;
}