Tag: Java

如何通过reflection运行挂起方法?

有一个协程块可以运行暂停function。 但我通过reflectioninvoke函数。 这是java风格的调用,显然一个简单的调用是行不通的。 有没有办法异步运行reflection的方法? 如何等待这个方法? import kotlin.coroutines.experimental.* class TestClass(val InString: String) { suspend fun printString() { println(InString) } } fun launch(context: CoroutineContext, block: suspend () -> Unit) = block.startCoroutine(StandaloneCoroutine(context)) private class StandaloneCoroutine(override val context: CoroutineContext): Continuation { override fun resume(value: Unit) {} override fun resumeWithException(exception: Throwable) { val currentThread = Thread.currentThread() currentThread.uncaughtExceptionHandler.uncaughtException(currentThread, exception) } } […]

@Throws在目标是属性时不起作用

在看这个问题的时候 ,我注意到将@Throws应用到get或set use-site没有任何作用。 此外, @Throws 的唯一有效目标是AnnotationTarget.FUNCTION , AnnotationTarget.PROPERTY_GETTER , AnnotationTarget.PROPERTY_SETTER和AnnotationTarget.CONSTRUCTOR 。 其他注释,如JPA批注和Deprecated工作正常,并适用于该方法! 这是奇怪的行为。 为了演示,我用Java创建了一个简单的抽象类,有一个构造函数,一个方法和一个get方法。 public abstract class JavaAbstractClass { @Deprecated @NotNull public abstract String getString() throws IOException; public abstract void setString(@NotNull String string) throws IOException; public abstract void throwsFunction() throws IOException; public JavaAbstractClass() throws IOException { } } 正如你所看到的,每个方法/构造函数都被标记为抛出IOException 。 但是,当我尝试在Kotlin中编写一个等同的类,并用互斥标记相应的方法时,生成的getString和setString方法没有throws子句。 abstract class KotlinAbstractClass @Throws(IOException::class) […]

JPA实现不需要无参数构造函数

有没有实现JPA的ORM框架,但不需要@Entity类的默认(无参数)构造函数? AFAIK,在JPA文档中说,一个@Entity应该有默认的构造函数,但是一个实现是否支持构造函数参数注入(或者可能是不安全的对象实例化),因此使用没有默认构造函数的类? 这个特性对于确保不变性( 标准的 JPA缺少)有很大的帮助,并且可以让开发人员对类实例状态保持严格的不variables(例如,它的字段总是有正确的值)。 顺便说一下,当使用Kotlin时,无参构造函数的需要会干扰良好的代码风格和编码约定。 有JIRM库处理构造函数注入和不可变性,但它不是一个完整的JPA实现。 那么,是否有任何JPA ORM支持@Entity类没有默认的构造函数?

Java是否支持默认参数值?

我遇到了一些具有以下结构的Java代码: public MyParameterizedFunction(String param1, int param2) { this(param1, param2, false); } public MyParameterizedFunction(String param1, int param2, boolean param3) { //use all three parameters here } 我知道在C ++中,我可以给参数分配一个默认值。 例如: void MyParameterizedFunction(String param1, int param2, bool param3=false); Java支持这种语法吗? 有没有任何理由为什么这两个步骤的语法是可取的?

将Java位图转换为字节数组

Bitmap bmp = intent.getExtras().get(“data”); int size = bmp.getRowBytes() * bmp.getHeight(); ByteBuffer b = ByteBuffer.allocate(size); bmp.copyPixelsToBuffer(b); byte[] bytes = new byte[size]; try { b.get(bytes, 0, bytes.length); } catch (BufferUnderflowException e) { // always happens } // do something with byte[] 在调用copyPixelsToBuffer之后,当我查看缓冲区时,字节全部为0 …从相机返回的位图是不可变的,但这不应该因为它正在进行复制。 这段代码有什么问题?

MockitoJUnitRunner已被弃用

我正在尝试使用@InjectMocks和@Mock进行unit testing。 @RunWith(MockitoJUnitRunner.class) public class ProblemDefinitionTest { @InjectMocks ProblemDefinition problemDefinition; @Mock Matrix matrixMock; @Test public void sanityCheck() { Assert.assertNotNull(problemDefinition); Assert.assertNotNull(matrixMock); } } 当我不包含@RunWith注释时,测试失败。 但 MockitoJUnitRunnertypes已被弃用 我正在使用Mockito 2.6.9。 我应该怎么做呢?

如何以编程方式更改应用程序:高程

我的应用程序是API 19.所以我不能使用android:海拔。 所以我的应用程序:我的布局提升。 Android XML:android:海拔与应用程序:海拔 举个例子 : 如何以编程方式更改应用程序:高程? 我可以更改android:海拔,但我找不到如何更改应用程序:海拔!

Gradle项目:java.lang.NoClassDefFoundError:kotlin / jvm / internal / Intrinsics

我正在开发一个Java项目,在这个项目中,我第一次尝试了Kotlin。 我开始使用Intellij Idea中提供的JavaToKoltin转换器将一些类转换为Kotlin。 其中我的自定义例外现在转换为Kotlin。 但是,这个exception处理不再正确工作了。 如果我在java代码中抛出一个自定义exception(例如MyCustomKotlinException.kt ),那么这个exception不会被捕获(见下面的代码)。 // Example.java package foo import java.util.*; import java.lang.*; import java.io.*; import foo.MyCustomKotlinException; class Example { public static void main (String[] args) { try { // Do some stuff // if Error MyCustomKotlinException e = new MyCustomKotlinException(“Error Message”); throw e; } catch (MyCustomKotlinException e) { // <– THIS PART […]

如何在Android项目中的Java模块上模拟Mockito 2的最终课程?

我有一个Android Clean Architecture项目,在Kotlin中有三个模块: 数据(Android库) domaine(Java库) 演示(Android应用程序) 这3个模块都有用junit编写的unit testing 。 但是对于Kotlin,每个课程都是默认的最终课程。 我很快就遇到了问题: 如何用mockito来嘲笑最后一堂课 现在可以用Mockito 2 可以通过mockito扩展机制来完成,方法是创建包含一行的文件/mockito-extensions/org.mockito.plugins.MockMaker : mock-maker-inline 此解决方案在数据模块(Android库)和表示模块(Android应用程序)上运行良好, 但在我的domaine模块(Java库)上不起作用 。 我知道这个问题已经被问到( 如何用mockito来模拟最后一个类 , Mock对象用Mockito来调用最终类的静态方法 ),但是我没有find我正在寻找的答案。

java.lang.VerifyError用kotlin创建一个gradle任务

我尝试用kotlin写一个gradle任务,这是我的代码: GreetingTask.kt class GreetingTask : DefaultTask() { @TaskAction fun greet() { println(“greet!”) } } 的build.gradle buildscript { repositories { mavenCentral() } dependencies { classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:0.12.613” } } apply plugin: “kotlin” dependencies { compile “org.jetbrains.kotlin:kotlin-stdlib:0.12.613” compile gradleApi() } GreetingTaskTest class GreetingTaskTest { @Test public fun canAddTaskToProject() { val project = ProjectBuilder.builder().build() val task = project.task(hashMapOf(“type” to […]