以下for循环有什么作用?程序何时会脱离循环?
for (c = 0; n; c++) {
/* . . . */
}
Run Code Online (Sandbox Code Playgroud)
这是SO上这个答案的这种for循环的一个例子.
从Effective Java的Serialization章节:
如果被反序列化的对象的类使用适当的声明定义了readResolve方法,则在反序列化后对新创建的对象调用此方法.
Effective Java中提供的示例如下所示,似乎Javadoc所说的throws部分是正确的格式,即ANY-ACCESS-MODIFIER Object readResolve() throws ObjectStreamException;
// readResolve for instance control - you can do better!
private Object readResolve () {
// Return the one true Elvis and let the garbage collector
// take care of the Elvis impersonator.
return INSTANCE;
}
Run Code Online (Sandbox Code Playgroud)
这里有适当的声明是什么意思?如果声明不合适,课程是否会编译?我发现这句话有点令人困惑.
请考虑以下来自java.util.concurrent.locks.AbstractQueuedSynchronizer的代码,作为标题中提出的想法的众多示例之一:
1258 public final boolean tryAcquireSharedNanos(int arg, long nanosTimeout) throws Interrupted Exception {
1259 if (Thread.interrupted())
1260 throw new InterruptedException();
1261 return tryAcquireShared(arg) >= 0 ||
1262 doAcquireSharedNanos(arg, nanosTimeout);
1263 }
Run Code Online (Sandbox Code Playgroud)
为什么大多数阻塞库方法通过调用静态方法Thread.interrupted()而不是实例方法来响应中断isInterrupted().调用静态方法也会清除中断状态,因此即使任务处理代码吞下InterruptionException,调用者也无法知道除了中断状态之外的其他状态.
好吧我想让自定义用户定义的对象作为我的键HashMap而不是说String.候选对象应该是不可变的吗?我在某处读到最好的做法是让它们不变,但我无法弄清楚原因.
public abstract class Enum<E extends Enum<E>>
implements Comparable<E>, Serializable {
// All code goes here
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,为什么 的类型参数有递归类型绑定Enum,以及为什么包含 的部分缺失Comparable<E>。换句话说,为什么它是Comparable<E>而不是Comparable<E extends Comparable<E>>
我有一个实现的类,Serializable我通过一个类型的锁对象来保护这个类的不变量Object.是暂时还是可以有任何不必要的副作用?
代码:
class MyClass implements Serializable{
private final transient lock = new Object();
....
}
Run Code Online (Sandbox Code Playgroud) java ×5
c ×1
collections ×1
concurrency ×1
enums ×1
for-loop ×1
generics ×1
immutability ×1
locking ×1