这太神奇了!看看这个简单的代码:
public class ArrayOFMagic<T> {
protected T[] array;
protected int showMeYouRLength() {
return array.length;
}
ArrayOFMagic() {
array = (T[]) new Object[10];
}
protected void set(T value, int index) {
array[index] = value;
}
public static void main(String[] args) {
ArrayOFMagic<Integer> arrayOFMagic = new ArrayOFMagic<Integer>();
System.out.println(arrayOFMagic.showMeYouRLength());
System.out.println("MAGIC INCOMING");
System.out.println(arrayOFMagic.array.length);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
10
MAGIC INCOMING
线程"main"中的异常java.lang.ClassCastException:[Ljava.lang.Object; 无法转换为[Ljava.lang.Integer; 在ArrayOFMagic.main(ArrayOFMagic.java:25)
我两次调用array.length.一次通过方法,直接一次.它在使用方法时继续,并在直接调用时抛出异常.Oo有人解释?
编辑:只是为了澄清:当没有直接调用时,类工作正常.你可以在数组元素和所有..上设置setter/getter!
我已经为我的sbt项目编写了自定义任务并将其放入build.sbt.但是,我想将任务的代码放在单独的文件中,并从build.sbt导入它.我创建mytask.sbt了包含这样的东西:
lazy val myTask = taskKey[Unit]("my task")
myTask := {
//doing task
}
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何从内部导入这个任务build.sbt所以我可以使用这样的东西:
compile <<= (compile in Compile) dependsOn myTask
Run Code Online (Sandbox Code Playgroud)
我知道有插件概念,但我认为这对我的需求来说太过分了.我想要的只是分开一些代码.
为什么这不能编译?
fun <T> returnOptionalOf(t: T): Optional<T> {
val optional: Optional<T> = Optional.of(t)
return optional
}
Run Code Online (Sandbox Code Playgroud)
错误是
类型不匹配:推断类型为 T,但预期为 T 和 Any
如何让它发挥作用?
这编译得很好:
fun returnOptionalOfString(t: String): Optional<String> {
val optional: Optional<String> = Optional.of(t)
return optional
}
Run Code Online (Sandbox Code Playgroud) 我有简化的代码如下所示:
path("path") {
post {
val routeFuture: Future[StandardRoute] = Future {
//some app logic
utilFunctionRoute()
}
??? // complete the request
}
}
Run Code Online (Sandbox Code Playgroud)
有一次,我有 Future[StandardRoute] 包含我的结果,但我不知道如何在不阻塞 Future 的情况下完成此请求。