我想了解下面示例中发生的情况(通过子类从包外部访问受保护的成员).
我知道对于包外的类,子类只能通过继承来查看受保护的成员.
有两个包:package1和package2.
package1: ProtectedClass.java
package org.test.package1;
public class ProtectedClass {
protected void foo () {
System.out.println("foo");
}
}
Run Code Online (Sandbox Code Playgroud)package2: ExtendsprotectedClass.java
package org.test.package2;
import org.test.package1.ProtectedClass;
public class ExtendsprotectedClass extends ProtectedClass {
public void boo() {
foo(); // This works,
// since protected method is visible through inheritance
}
public static void main(String[] args) {
ExtendsprotectedClass epc = new ExtendsprotectedClass();
epc.foo(); // Why is this working?
// Since it is accessed through a reference,
// …Run Code Online (Sandbox Code Playgroud)这可能是非常基本的,但非常好奇.这是代码片段和输出
public class PlainSystemGC {
public static void main(String ...strings) {
System.out.println("Free Memory (Before GC): " + Runtime.getRuntime().freeMemory());
System.gc();
System.out.println("Free Memory (After GC): " + Runtime.getRuntime().freeMemory());
}
}
Run Code Online (Sandbox Code Playgroud)
和输出
Free Memory (Before GC): 1859640
Free Memory (After GC): 1911768
Run Code Online (Sandbox Code Playgroud)
我很想知道GC收集的是什么,因为没有创建对象.
什么是被释放的记忆?(太52kb)
@JSauer - 即使运行100次,它也能得到完全相同的结果
sleep()是Thread类的静态方法.从多个线程调用时它是如何工作的.以及它如何找出当前执行的线程.?
或者可能是一个更通用的问题将是如何从不同的线程调用静态方法?不会有任何并发问题吗?
在Java中,有没有办法阻止扩展接口.
由于final无法添加到一个interface,我很想知道是否有任何方法,以防止扩展接口.
我正在尝试确保文档字段的索引并且它不起作用.MongoDB版本是2.0.2.这是非常基本的,不知怎的,我觉得我可能错过了一些东西!它能够插入3个带有相同空字符串的文档!
这是详细信息:
> use testinsert
switched to db testinsert
> db.users.ensureIndex({ name : 1});
> doc = {
... name : ""
... }
{ "name" : "" }
> doc
{ "name" : "" }
> db.users.stats();
{
"ns" : "testinsert.users",
"count" : 0,
"size" : 0,
"storageSize" : 8192,
"numExtents" : 1,
"nindexes" : 2,
"lastExtentSize" : 8192,
"paddingFactor" : 1,
"flags" : 1,
"totalIndexSize" : 16352,
"indexSizes" : {
"_id_" : 8176,
"name_1" : 8176
},
"ok" …Run Code Online (Sandbox Code Playgroud)