我有一个父类Builder,可以使用Builder类型参数或其子类型进行生成:
class Builder<T extends Builder> {
@SuppressWarnings("unchecked")
T doSmth() {
System.out.println("do smth");
return (T)this;
}
}
Run Code Online (Sandbox Code Playgroud)
它有一个子类 - BuilderChild:
class BuilderChild extends Builder<BuilderChild> {
BuilderChild doSmthElse() {
System.out.println("do smth else");
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
所以,我可以doSmth在BuilderChild实例上调用方法,它返回BuilderChild:
new BuilderChild().doSmth().doSmthElse();
Run Code Online (Sandbox Code Playgroud)
但是当我试图通过上面BuilderChild的行停止编译时.
class BuilderChild<T> extends Builder<BuilderChild> {
BuilderChild doSmthElse() {
System.out.println("do smth else");
return this;
}
}
...
//Compile error, because doSmth()
//returns Builder instead of BuilderChild.
new BuilderChild().doSmth().doSmthElse();
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么在我生化后doSmth() …
我有一个java项目,测试用groovy编写.
我使用TestNG作为单元测试框架.
我也有几个用java编写的测试.
在maven test-compile阶段之后,所有测试(groovy和java)都被编译并放在类似的文件夹里面target/test-classes/.
当我想用maven运行测试时,只运行java测试.
当我尝试从IDE(IntelliJ IDEA)运行groovy测试时,它运行得很好.
我反编译了groovy测试,这就是我所拥有的:
package mypackage.core;
import groovy.lang.GroovyObject;
import groovy.lang.MetaClass;
import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
import org.codehaus.groovy.runtime.callsite.CallSite;
import org.testng.annotations.Test;
@Test
public class Sample
implements GroovyObject
{
public Sample()
{
Sample this;
CallSite[] arrayOfCallSite = $getCallSiteArray();
this.metaClass = $getStaticMetaClass();
MetaClass tmp20_17 = this.metaClass;
this.metaClass = ((MetaClass)ScriptBytecodeAdapter.castToType(tmp20_17, $get$$class$groovy$lang$MetaClass()));
tmp20_17;
while (true)
return;
}
@Test
public void testSomething()
{
CallSite[] arrayOfCallSite = $getCallSiteArray(); Registry registry = arrayOfCallSite[0].callConstructor($get$$class$mypackage$core$internal$Registry());
arrayOfCallSite[1].call(registry, null); for (return; ; return);
}
static
{
tmp10_7 = …Run Code Online (Sandbox Code Playgroud) 我想在 html-view 和 RESTful API 的控制器中重用相同的逻辑。在 Grails 中执行此操作的最佳方法是什么?
我确信我的问题很常见,我几乎可以肯定它没有简单的解决方案.
所以:我有一个界面:
public interface Task<E> extends Serializable {
Task<E>[] splitTask (int partsNum);
E mergeSolutions (E... solutions);
E solveTask ();
E getSolution ();
Integer getId ();
void setId (Integer id);
}
Run Code Online (Sandbox Code Playgroud)
我也有它的实现 - BubbleSortTask,它的代码并不有趣.这个设计的主要思想是:我们可以将巨大的任务分解为子任务,解决每个子任务然后合并解决方案:
Integer[] array = {1, 4, 9, 3, 3, 0, 8, 2, 6};
BubbleSortTask bst = new BubbleSortTask (array);
Task[] ts = bst.splitTask (2);
for (Task t : ts) {
t.solveTask ();
}
bst.mergeSolutions (((BubbleSortTask)ts[0]).getSolution (),
((BubbleSortTask)ts[1]).getSolution ());
Run Code Online (Sandbox Code Playgroud)
它运作良好.但是在一般情况下我不应该对具体实现有所了解,我想做这样的事情:
public void processTask (Task t, int subtasksNum) {
Task[] …Run Code Online (Sandbox Code Playgroud) 如果经过身份验证的用户具有相应的权限,如何使链接可见?
我正在使用JSF,据我所知,我应该使用rendered一个应该调用backing bean的布尔方法的组件的属性.
我甚至在不久前找到了代码,但现在我再也找不到了.那么,任何人都可以给我一个这样的布尔方法的例子,它适用于spring security吗?(或者更好的是,链接到一些描述此问题的文章).
我需要显示用户列表,该列表应如下例所示:
海伦· 伯恩斯
爱德华·费尔法克斯· 罗切斯特
伯莎安托万内特·梅森
阿黛勒 瓦伦
有没有办法在不使用javascript的情况下实现这一目标?每行应该是一个跨度,即<span>Helen</span><span>Burns</span>不可接受.
这段代码出了什么问题?:
ByteBuffer byteBuffer = ByteBuffer.allocate(4);
FileChannel channel = cacheFile.getChannel();
int bytesCount = channel.read(byteBuffer, offset);
int value = byteBuffer.getInt();
Run Code Online (Sandbox Code Playgroud)
最后一行总是抛出BufferUnderflowException.变量bytesCount包含4.
我在这里想念什么?
我在jQuery的ajax函数中没有任何expirience.我想尝试简单的调用:
$.get ("ajaxsupport/login");
Run Code Online (Sandbox Code Playgroud)
我有一个带url-pattern的servlet("ajaxsupport/login").
当我输入浏览器的地址字段" http:// localhost:9090/ajaxsupport/login "时,我看到了一些结果.但$ .get(..)甚至没有打电话.
问题是什么?
我使用jquery 1.3.1