版主注意:这里已经发布了39个答案(有些已被删除)。在您发布您的答案之前,考虑是否可以在讨论中添加一些有意义的东西。你很可能只是在重复别人已经说过的话。我偶尔会发现自己需要在一个类中公开一个私有(private)方法,只是为了为其编写一些单元测试。通常这是因为该方法包含在类中的其他方法之间共享的逻辑,并且自己测试逻辑更整洁,或者另一个原因可能是我想测试同步线程中使用的逻辑而不必担心关于线程问题。其他人发现自己这样做是因为我真的不喜欢这样做吗?我个人认为奖金超过了将方法公开的问题,该方法并没有真正提供类之外的任何服务......更新感谢大家的回答,似乎引起了人们的兴趣。我认为普遍的共识是
版主注意:这里已经发布了39个答案(有些已被删除)。在您发布您的答案之前,考虑是否可以在讨论中添加一些有意义的东西。你很可能只是在重复别人已经说过的话。我偶尔会发现自己需要在一个类中公开一个私有(private)方法,只是为了为其编写一些单元测试。通常这是因为该方法包含在类中的其他方法之间共享的逻辑,并且自己测试逻辑更整洁,或者另一个原因可能是我想测试同步线程中使用的逻辑而不必担心关于线程问题。其他人发现自己这样做是因为我真的不喜欢这样做吗?我个人认为奖金超过了将方法公开的问题,该方法并没有真正提供类之外的任何服务......更新感谢大家的回答,似乎引起了人们的兴趣。我认为普遍的共识是
这是代码:packagecom.XXX;publicfinalclassFoo{privateFoo(){//intentionallyempty}publicstaticintbar(){return1;}}这是测试:packagecom.XXX;publicFooTest{@TestvoidtestValidatesThatBarWorks(){intresult=Foo.bar();assertEquals(1,result);}@Test(expected=java.lang.IllegalAccessException.class)voidtestValidatesThatC
这是代码:packagecom.XXX;publicfinalclassFoo{privateFoo(){//intentionallyempty}publicstaticintbar(){return1;}}这是测试:packagecom.XXX;publicFooTest{@TestvoidtestValidatesThatBarWorks(){intresult=Foo.bar();assertEquals(1,result);}@Test(expected=java.lang.IllegalAccessException.class)voidtestValidatesThatC
我看到一些引用文献提到了Java中称为privateprotected的访问修饰符(这两个词放在一起):privateprotectedsomeMethod(){}我发现其中一个提到这个的页面是here.我的学校课也提到了这个访问修饰符(并说它存在)。但是,使用它会导致Java语言出错。我尝试了变量和方法,我很确定它不存在,但我想解释发生了什么。考虑过,然后拒绝?还是在较新版本的Java中被删除了?编辑:我不是在寻找有关protected关键字的信息。 最佳答案 移除访问修饰符Java最初确实有privateprotected修饰符
我看到一些引用文献提到了Java中称为privateprotected的访问修饰符(这两个词放在一起):privateprotectedsomeMethod(){}我发现其中一个提到这个的页面是here.我的学校课也提到了这个访问修饰符(并说它存在)。但是,使用它会导致Java语言出错。我尝试了变量和方法,我很确定它不存在,但我想解释发生了什么。考虑过,然后拒绝?还是在较新版本的Java中被删除了?编辑:我不是在寻找有关protected关键字的信息。 最佳答案 移除访问修饰符Java最初确实有privateprotected修饰符
我正在使用Mockito的@Mock和@InjectMocks注释将依赖项注入(inject)到使用Spring的@Autowired注释的私有(private)字段中:@RunWith(MockitoJUnitRunner.class)publicclassDemoTest{@MockprivateSomeServiceservice;@InjectMocksprivateDemodemo;/*...*/}和publicclassDemo{@AutowiredprivateSomeServiceservice;/*...*/}现在我还想将real对象注入(inject)私有(priv
我正在使用Mockito的@Mock和@InjectMocks注释将依赖项注入(inject)到使用Spring的@Autowired注释的私有(private)字段中:@RunWith(MockitoJUnitRunner.class)publicclassDemoTest{@MockprivateSomeServiceservice;@InjectMocksprivateDemodemo;/*...*/}和publicclassDemo{@AutowiredprivateSomeServiceservice;/*...*/}现在我还想将real对象注入(inject)私有(priv
我观察到外部类可以访问内部类私有(private)实例变量。这怎么可能?这是一个演示相同的示例代码:classABC{classXYZ{privateintx=10;}publicstaticvoidmain(String...args){ABC.XYZxx=newABC().newXYZ();System.out.println("Hello::"+xx.x);///Whyisthisallowed??}}为什么允许这种行为? 最佳答案 内部类只是将一些真正属于原始外部类的功能干净地分开的一种方式。当您有2个要求时使用它们:如果在
我观察到外部类可以访问内部类私有(private)实例变量。这怎么可能?这是一个演示相同的示例代码:classABC{classXYZ{privateintx=10;}publicstaticvoidmain(String...args){ABC.XYZxx=newABC().newXYZ();System.out.println("Hello::"+xx.x);///Whyisthisallowed??}}为什么允许这种行为? 最佳答案 内部类只是将一些真正属于原始外部类的功能干净地分开的一种方式。当您有2个要求时使用它们:如果在