我想将 Jasper Reports 报告页脚中的当前页码和总页码打印为“第 2 页,共 10 页”之类的短语。该短语必须位于页边距中间。文本模式取决于区域设置。
自然的方法是使用消息模式来进行格式化和翻译,例如 msg($R{msg_page_number}, $V{PAGE_NUMBER}, $V{TOTAL_PAGE_NUMBERS})。这是不可能的,因为没有像 TOTAL_PAGE_NUMBERS 这样的变量。人们必须在报告布局的不同时间评估 PAGE_NUMBER 变量。因此,必须使用多个文本元素来打印该行。这使得居中变得非常困难,因为没有任何文本元素实际上位于页面的中心。
有没有办法在页面上水平居中打印诸如“$R{page} X $R{of} Y”之类的短语中的当前页码和总页码?
我正在尝试使用Mockito在Kotlin中模拟通用接口。但是到目前为止,我还没有找到自然的解决方案。鉴于:
interface X<T> {
fun x(): T
}
fun f(x: X<Int>) = x.x()
Run Code Online (Sandbox Code Playgroud)
我可以嘲笑X以下任何一项:
val x = f(Mockito.mock(X::class.java) as X<Int>)
但这会产生“未经检查的演员表”警告。
@Mock lateinit var x: X<Int>
但是我不想使用@Mock注释,因为我想将字段最终确定。
引入一个辅助函数,就像模仿库库林库所做的那样:
inline fun <reified T : Any> mock(): T = Mockito.mock(T::class.java)!!
然后这样称呼它:
val x: X<Int> = mock()
但是我不想使用辅助函数。
是否有一种优雅的纯Kotlin方法来模拟Mockito的通用接口?(我希望版本1.不带警告。)