Java ClassCastException这绝对没有道理

时间:2018-07-05 18:18:58

标签: casting optional classcastexception

我遇到以下强制转换异常:

java.lang.ClassCastException: com.model.Bucket cannot be cast to java.util.Optional
    at com.service.BucketServiceTest.testGetById(BucketServiceTest.java:65)

但是,我的代码中没有任何地方试图投射到Optional

@Test
public void testGetById() {
    Mockito.when(bucketRepository.findById(anyLong())).thenAnswer(invocationOnMock -> testBucket);
    String bucketName = bucketService.getBucketById(testBucket.getId()).getName();
    assertEquals(bucketName, testBucket.getName());
}

第65行是String bucketName = bucketService.getBucketById(testBucket.getId()).getName();

getBucketById方法返回类型bucket而不是类型optional

@Transactional(readOnly = true)
public Bucket getBucketById(long id) {
    return (Bucket) bucketRepository.findById(id).orElse(null);
}

因此,我不知道将Bucket强制转换为Optional的位置,因此这个错误对我来说毫无意义。

1 个答案:

答案 0 :(得分:0)

如果有人遇到相同的问题,它对我这样工作

  

当(repository.findById(any()))。thenReturn(Optional.of(element));