小编Sta*_*lin的帖子

子类是否继承私有字段?

这是一个面试问题.

子类是否继承私有字段?

我回答"否",因为我们无法使用"正常的OOP方式"访问它们.但是访谈者认为它们是继承的,因为我们可以间接访问这些字段或使用反射,它们仍然存在于对象中.

我回来后,在javadoc中找到以下引用:

超级私人会员

子类不继承其父类的私有成员.

你知道面试官的意见吗?

java oop inheritance private

233
推荐指数
8
解决办法
21万
查看次数

为什么存在WeakHashMap,但缺少WeakSet?

来自J. Bloch

内存泄漏的来源是监听器......确保回调被及时垃圾回收的最佳方法是仅存储对它们的弱引用,例如,通过仅将它们存储为WeakHashMap中的键 .

那么,为什么Java Collections框架中没有任何WeakSet ?

java collections garbage-collection weak-references

72
推荐指数
2
解决办法
2万
查看次数

最终方法嘲笑

我需要使用mockito使用final方法模拟一些类.我写过这样的东西

@Test
public void test() {
    B b = mock(B.class);
    doReturn("bar called").when(b).bar();   
    assertEquals("must be \"overrided\"", "bar called", b.bar());
    //bla-bla
}


class B {
    public final String bar() {
        return "fail";
    }
}
Run Code Online (Sandbox Code Playgroud)

但它失败了.我尝试了一些"黑客",它的确有效.

   @Test
   public void hackTest() {
        class NewB extends B {
            public String barForTest() {
                return bar();
            }
        }
        NewB b = mock(NewB.class);
        doReturn("bar called").when(b).barForTest();
        assertEquals("must be \"overrided\"", "bar called", b.barForTest());
    }
Run Code Online (Sandbox Code Playgroud)

它有效,但"闻起来".

那么,正确的方式在哪里?

谢谢.

java testing unit-testing mocking mockito

60
推荐指数
5
解决办法
6万
查看次数

在Java中断言关键字

您是否使用assert关键字或抛出一些验证运行时异常?它给你带来了什么好处,或者为什么你觉得它不值得使用?

java validation assert exception

40
推荐指数
3
解决办法
3万
查看次数

为什么没有getFirst(可迭代)方法?

Iterables提供了两种方法getLast

 public static <T> T getLast(Iterable<T> iterable);
 public static <T> T getLast(Iterable<T> iterable, @Nullable T defaultValue);
Run Code Online (Sandbox Code Playgroud)

但只有一个 getFirst

 public static <T> T getFirst(Iterable<T> iterable, @Nullable T defaultValue);
Run Code Online (Sandbox Code Playgroud)

是否存在破坏对称性的设计/实施原因?

java collections iterable api-design guava

36
推荐指数
2
解决办法
2万
查看次数

JAXB和构造函数

我开始学习JAXB,所以我的问题可能非常愚蠢.现在我有类并希望生成XML Schema.遵循条指令,我得到了例外

IllegalAnnotationExceptions ...没有no-arg默认构造函数.

是啊.我的类没有默认的no-arg构造函数.这太容易了.我有包可见的构造函数/最终方法的类,当然还有参数.我该怎么办 - 创建一些特定的momemto/builder类或者将我的构造函数指定给JAXB(以什么方式?)?谢谢.

java constructor creation jaxb

28
推荐指数
3
解决办法
3万
查看次数

龙目岛与休眠

这可能吗?没有看到太多关于它的讨论.

java code-generation hibernate lombok

28
推荐指数
3
解决办法
1万
查看次数

在ruby中调用父构造函数

我该如何调用父母构造函数?

module C
    attr_accessor :c, :cc
    def initialization c, cc
        @c, @cc = c, cc
    end 
end

class B
    attr_accessor :b, :bb
    def initialization b, bb
        @b, @bb = b, bb
    end 
end


class A < B
    include C
    attr_accessor :a, :aa
    def initialization (a, b, c, aa, bb, cc)
        #call B::initialization - ?
        #call C::initialization - ?
        @a, @aa = a, aa
    end
end
Run Code Online (Sandbox Code Playgroud)

谢谢.

ruby oop constructor initialization new-operator

27
推荐指数
4
解决办法
3万
查看次数

Java静态导入

通过实验,我发现即使在静态上下文中,Java非静态方法也会覆盖范围内所有相同的命名方法.即使不允许参数重载.喜欢

import java.util.Arrays;    
import static java.util.Arrays.toString;

public class A {
    public static void bar(Object... args) {
        Arrays.toString(args);
        toString(args);     //toString() in java.lang.Object cannot be applied to (java.lang.Object[])
    }
}
Run Code Online (Sandbox Code Playgroud)

我在规范中找不到任何相关内容.这是一个错误吗?如果不是,有没有理由实施这样的语言?

UPD:Java 6不编译此示例.问题是 - 为什么?

java scope overloading language-design static-import

26
推荐指数
1
解决办法
3371
查看次数

为什么函数语句需要一个名字?

为什么我可以写

 var foo = function(){}();
Run Code Online (Sandbox Code Playgroud)

但不能

 function(){}();
Run Code Online (Sandbox Code Playgroud)

有任何设计原因吗?

javascript

21
推荐指数
2
解决办法
3万
查看次数