我有一堂课:
class Generic<T> {
List<List<T>> getList() {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
当我Generic用通配符和调用getList方法声明 a时,以下赋值是非法的。
Generic<? extends Number> tt = null;
List<List<? extends Number>> list = tt.getList(); // this line gives compile error
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎很奇怪,因为根据 的声明Generic,很自然地创建 aGeneric<T>并获得 a List<List<T>>when call getList。
事实上,它需要我像这样写作业:
List<? extends List<? extends Number>> list = tt.getList(); // this one is correct
Run Code Online (Sandbox Code Playgroud)
我想知道为什么第一个是非法的,为什么第二个是合法的。
我给出的例子只是一些示例代码来说明问题,您不必关心它们的含义。
错误信息:
不兼容的类型:
必需:List<java.util.List<? extends java.lang.Number>>
找到:List<java.util.List<capture<? extends java.lang.Number>>>
LocalDate.now()当使用 模拟静态方法时,我得到了这个异常Mockito.mockStatic()。
org.mockito.exceptions.misusing.UnfinishedStubbingException:此处检测到未完成的存根:at utils.PowerMockTest.test(PowerMockTest.java:18)
例如 thenReturn() 可能会丢失。
正确存根的示例:when(mock.isOk()).thenReturn(true); 当(mock.isOk()).thenThrow(异常); doThrow(异常).when(mock).someVoidMethod(); 提示:
- 缺少 thenReturn()
- 您正在尝试存根最终方法,该方法不受支持
- 在“thenReturn”指令完成之前,您正在对内部另一个模拟的行为进行存根
代码是
public class MockStaticTest {
@Test
void test(){
LocalDate today=LocalDate.of(2020,11,20);
try (MockedStatic mocked = mockStatic(LocalDate.class)) {
mocked.when(LocalDate::now).thenReturn(LocalDate.of(2020,11,10));
Assertions.assertEquals(today,LocalDate.now());
mocked.verify(atLeastOnce(),LocalDate::now);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我对异常消息有点困惑,因为我确实添加了thenReturn语句。
任何帮助,将不胜感激。
我知道kafka生产者会将消息分批进行。每个批次属于一个特定的分区。
我的问题是
假设我在键控过程后得到一个流。
DataStream<T> stream= sourceStream.keyBy(key).window(window).apply(function);
Run Code Online (Sandbox Code Playgroud)
生成的流是否仍被键入?我可以在该流中使用某些 Keyed 状态吗?