小编Ste*_*stl的帖子

谁首先在类加载过程中创建Class <?>对象?

在我发现的文档中:

类对象由Java虚拟机在加载类时自动构造,并通过调用类加载器中的defineClass方法来构造.

我检查了源代码,但没有找到defineClass要调用的地方,例如来自loadClass方法.你能告诉我,defineClass根据这个方案,谁和什么时候打电话的方法:

方案

图片来源

java classloader

17
推荐指数
2
解决办法
492
查看次数

与Mockito 1.10.17的java.lang.VerifyError

我试图用Mockito取代JMock(1.10.17).我已经成功完成了一些单元测试,但现在我想使用超时功能

verify(publisher, timeout(5000)).notifySubscribers(any(BecameMasterMessage.class));
Run Code Online (Sandbox Code Playgroud)

我得到这个例外:

java.lang.VerifyError: (class: org/mockito/internal/verification/VerificationOverTimeImpl, method: verify signature: (Lorg/mockito/internal/verification/api/VerificationData;)V) Incompatible argument to function
    at org.mockito.verification.Timeout.<init>(Timeout.java:32)
    at org.mockito.verification.Timeout.<init>(Timeout.java:25)
    at org.mockito.Mockito.timeout(Mockito.java:2164)
Run Code Online (Sandbox Code Playgroud)

问题发生在IntelliJ和Maven中.类路径上只有一个版本的Mockito.在类路径上还有JMock 2.5.1,我无法删除,因为此时99%的单元测试仍然使用JMock.我不知道这与它有什么关系.

更新:我尝试使用JMock 2.6.0和Hamcrest 1.3,但结果是一样的.

更新2:

这有效:

Thread.sleep( 5000 );
verify( m_publisher ).notifySubscribers( any( BecameMasterMessage.class ) );
Run Code Online (Sandbox Code Playgroud)

而这不是:

verify(publisher, timeout(5000)).notifySubscribers(any(BecameMasterMessage.class));
Run Code Online (Sandbox Code Playgroud)

更新3:我做了一个小测试项目,它有完全相同的问题:请参阅https://github.com/wimdeblauwe/mockito-verify-problem并从IntelliJ或Maven运行它.

java testng jmock mockito

5
推荐指数
1
解决办法
2272
查看次数

Java API核心类的maven-javadoc-plugin和inheritDoc

我正在编写自己的Java 8 Stream实现,并希望从原始java.util.stream.Stream接口继承Javadoc .但是我无法让它发挥作用.生成的Javadoc仅显示我的文档,但不显示扩展Stream接口的文档.

因此,例如,此方法的javadoc仅包含文本"一些附加信息",但不包含Stream界面中的文档.

/**
 * {@inheritDoc}
 * Some additional information.
 */
@Override
public Stream<T> filter(Predicate<? super T> predicate) {
  // ... my stream implementation...
}
Run Code Online (Sandbox Code Playgroud)

这是我对maven-javadoc-plugin的配置:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-javadoc-plugin</artifactId>
  <version>2.10.1</version>
  <configuration>
    <links>
      <link>http://docs.oracle.com/javase/8/docs/api/</link>
    </links>
  </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

我是否会错过这种配置?我设置sourcetarget1.8的Maven的编译器插件.因此,根据maven-javadoc-plugin的文档,应该自动检测java API.

Stack Overflow上也有类似的问题,但那里的答案似乎没有用.

java javadoc maven maven-javadoc-plugin

4
推荐指数
1
解决办法
609
查看次数

表达式的含义是什么(n&3)== 0和n >> = 2

我觉得困惑与这些表达while(n&3)==0n>>=2.我不确定这个条件何时执行while((n&3)==0)以及会发生什么n>>=2

public int numSquares(int n) {
    while ((n & 3) == 0) //n % 4 == 0  
        n >>= 2;  
    if ((n & 7) == 7) return 4; //n% 8 == 7  

    if(is_square(n)) return 1;  
    int sqrt_n = (int) Math.sqrt(n);  
    for (int i = 1; i<= sqrt_n; i++){  
        if (is_square(n-i*i)) return 2;  
    }  
    return 3;             
}

public boolean is_square(int n){  
    int temp = (int) Math.sqrt(n);  
    return temp * temp == n;  
}  
Run Code Online (Sandbox Code Playgroud)

java

2
推荐指数
1
解决办法
717
查看次数