我有一个检票Page用@SpringBean
class ScreenDetailsPage(parameters: PageParameters) extends BasePage(parameters) {
@SpringBean(name = "screenDAO") protected var screenDao: DAO[Screen] = null
assertNotNull(screenDao)
Run Code Online (Sandbox Code Playgroud)
我发现没有填充@SpringBean.如果screenDao是val或var,protected或private 则没有区别.
查找树,我发现Component(间接)的构造函数@SpringBean代表其子类初始化s,但是对null的赋值是uninitializing它.但Scala要求分配.
我该如何防止这种行为?
有人可以解释嵌套在泛型中的结构类型的奇怪结构:
implicit def Function1Functor[R]: Functor[({type ?[?]=(R) => ?})#?] =
new Functor[({type ?[?]=(R) => ?})#?] ....
Run Code Online (Sandbox Code Playgroud)
此示例来自Scalaz库:Functor.scala
为什么需要这种结构呢?写起来并不简单:
implicit def Function1Functor[R,A]: Functor[R =>A]
Run Code Online (Sandbox Code Playgroud)
要么
implicit def Function1Functor[R,A]: Functor[Function1[R,A]]
Run Code Online (Sandbox Code Playgroud) 当我使用对该对象的java.lang.reflect.Proxy.newInstance(...)调用创建接口的实例时,finalize不会将其传递给invocationHandler.有人能指出我记录这种行为的地方吗?
private Method lastInvokedMethod = null;
@Test
public void finalize_methods_seem_to_disappear_on_proxies() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
final Method lengthMethod = CharSequence.class.getDeclaredMethod("length");
final Method finalizeMethod = Object.class.getDeclaredMethod("finalize");
final Method equalsMethod = Object.class.getDeclaredMethod("equals", new Class[] {Object.class});
InvocationHandler handler = new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
lastInvokedMethod = method;
if (method.equals(lengthMethod))
return 42;
else if (method.equals(equalsMethod))
return true;
else
return null;
}
};
CharSequence proxy = (CharSequence) Proxy.newProxyInstance(this.getClass().getClassLoader(), new Class<?>[]{CharSequence.class}, handler); …Run Code Online (Sandbox Code Playgroud) 以下代码
public interface IGiveUp
{
void surrender(List<Class> l);
}
public class GiveUp implements IGiveUp {
@Override public void surrender(List<Class> l) {}
}
Run Code Online (Sandbox Code Playgroud)
编译好.但是当我向接口添加一个未使用的泛型类型参数时
public interface IGiveUp<X>
{
void surrender(List<Class> l);
}
Run Code Online (Sandbox Code Playgroud)
它无法编译(javac 1.6.0_23)
IGiveUp.GiveUp is not abstract and does not override abstract method surrender(java.util.List)
Run Code Online (Sandbox Code Playgroud)
如果我在实现中指定泛型,它将编译
public class GiveUp implements IGiveUp<Object>
Run Code Online (Sandbox Code Playgroud)
或使方法参数成为非泛型类型的列表
void surrender(List l);
Run Code Online (Sandbox Code Playgroud) 如果我有一个顶级对象声明
package com.example
object MyObject {}
Run Code Online (Sandbox Code Playgroud)
如何将字符串com.example.MyObject转换为引用MyObject?
我正在使用一个漂亮的新show-your-password-single-char JQuery hacks,我可以将其应用于我在页面上的所有密码字段
<script type="text/javascript">
$(document).ready( function() {
$('input:password').dPassword();
});
</script>
Run Code Online (Sandbox Code Playgroud)
但我的更改密码对话框是在Wicket ModalWindow中呈现的,
final ModalWindow window = new ModalWindow("change-password-panel");
final PasswordChangePanel panel = new PasswordChangePanel(window, myPasswordValidator);
window.setContent(panel);
add(window);
add(new AjaxFallbackLink<String>("change-password") {
@Override public void onClick(AjaxRequestTarget target) {
window.show(target);
}});
Run Code Online (Sandbox Code Playgroud)
所以它不在document.ready上.
当我的ModalWindow显示时,如何安排重新运行JQuery选择器?
我正在为Wicket应用程序编写ScalaTest FeatureSpec.我有一个wicketTester值,我继续调用方法,即:
scenario("No username and password") {
val wicketTester = new WicketTester(app)
given("user visits Admin home page")
wicketTester.startPage(classOf[AdminHomePage])
then("signin page is displayed")
val login = wicketTester.newFormTester("signInPanel:signInForm")
wicketTester.assertRenderedPage(classOf[SignInPage])
...
when("correct username and password are entered")
...
then("no login and error is displayed")
wicketTester.assertRenderedPage(classOf[SignInPage])
wicketTester.assertErrorMessages(Array("Field 'password' is required."))
Run Code Online (Sandbox Code Playgroud)
现在所有这些对wicketTester的参考都让我失望了,所以我想删除它们,目标是DSL必杀技......
scenario("No username and password") {
val wicketTester = new WicketTester(app)
given("user visits Admin home page")
startPage(classOf[AdminHomePage])
then("signin page is displayed")
val login = wicketTester.newFormTester("signInPanel:signInForm")
assertRenderedPage(classOf[SignInPage])...
Run Code Online (Sandbox Code Playgroud)
有没有办法让本地方法看起来好像是我班上的方法?
我有一个Scala特征
trait MyTrait{
val foo: String
def bar = foo
}
Run Code Online (Sandbox Code Playgroud)
以及提供foo的Java类
public class MyJavaClass {
public final String foo = "hello";
}
Run Code Online (Sandbox Code Playgroud)
现在我尝试混合它们
class MyScalaClass extends MyJavaClass with MyTrait {
}
Run Code Online (Sandbox Code Playgroud)
它不会编译
overriding value foo in trait MyTrait of type String; value foo in class MyJavaClass of type java.lang.String has incompatible type.
Run Code Online (Sandbox Code Playgroud)
我已经尝试了vals,vars和defs的所有组合,看似合理,但找不到任何编译此配置的方法.
如何使用Java类提供特征的val?
我需要在嵌入式1.4兼容VM上运行Groovy.当前的Groovy版本至少需要JDK 1.5.
过去的某些版本确实支持JDK 1.4,但当前版本没有.
出于某种原因,当我运行以下代码时,程序打印出"JDN4"或"JDN16",我总是希望它打印"JDN",然后打印三个数字,范围从0到9; 例如,"JDN123"或"JDN045"或"JDN206".代码有什么问题?
import java.util.*;
public class Document2 {
public static void main(String[] args) {
String initials = "JDN";
int randomNumbers;
Random generator = new Random();
int randomNumber1 = generator.nextInt(9);
int randomNumber2 = generator.nextInt(9);
int randomNumber3 = generator.nextInt(9);
randomNumbers = randomNumber1 + randomNumber2 + randomNumber3;
String userName = initials + randomNumbers;
System.out.println("Your username is " + userName + ".");
}
}
Run Code Online (Sandbox Code Playgroud) 我Map[Symbol, Option[String]]从一个网页上读取值,其中一些可能会丢失.
我想"扁平化"这个Map[Symbol, String]去除所有的None价值观.
到目前为止我能做的最好的是
def removeNones[K, V](map: Map[K, Option[V]]): Map[K, V] =
map.collect { case kv if kv._2.isDefined => (kv._1, kv._2.get) }
Run Code Online (Sandbox Code Playgroud)
但我真的不喜欢case,不得不重建Pair.
谁能找到更好的表达方式?
我正在写一个ScalaTest JMock期望.语法通常是
expecting { e => import e._
// call methods on e
}
Run Code Online (Sandbox Code Playgroud)
现在我碰巧知道e是Expectation的子类.我可以写
expecting { e =>
val e2 = e.asInstanceOf[MySubclass]
import e2._
// call MySubclass methods
}
Run Code Online (Sandbox Code Playgroud)
但我找不到任何制作单线的方法
expecting { e => import (e.asInstanceOf[MySubclass])._
// call MySubclass methods
}
Run Code Online (Sandbox Code Playgroud)
编译.
无论如何,只需一步结合向下铸造和进口?