gaokang 2016-04-13 02:14 采纳率: 42.9%
浏览 1474
已结题

struts2 scope类语法问题

package com.opensymphony.xwork2.inject;

import java.util.concurrent.Callable;

public enum Scope {

DEFAULT {
@Override
InternalFactory<? extends T> scopeFactory(Class type, String name,
InternalFactory<? extends T> factory) {
return factory;
}
},

SINGLETON {
@Override
InternalFactory<? extends T> scopeFactory(Class type, String name,
final InternalFactory<? extends T> factory) {
return new InternalFactory() {
T instance;
public T create(InternalContext context) {
synchronized (context.getContainer()) {
if (instance == null) {
instance = factory.create(context);
}
return instance;
}
}

    @Override
    public String toString() {
      return factory.toString();
    }
  };
}

},

THREAD {
@Override
InternalFactory<? extends T> scopeFactory(Class type, String name,
final InternalFactory<? extends T> factory) {
return new InternalFactory() {
final ThreadLocal threadLocal = new ThreadLocal();
public T create(final InternalContext context) {
T t = threadLocal.get();
if (t == null) {
t = factory.create(context);
threadLocal.set(t);
}
return t;
}

    @Override
    public String toString() {
      return factory.toString();
    }
  };
}

},

REQUEST {
@Override
InternalFactory<? extends T> scopeFactory(final Class type,
final String name, final InternalFactory<? extends T> factory) {
return new InternalFactory() {
public T create(InternalContext context) {
Strategy strategy = context.getScopeStrategy();
try {
return strategy.findInRequest(
type, name, toCallable(context, factory));
} catch (Exception e) {
throw new RuntimeException(e);
}
}

    @Override
    public String toString() {
      return factory.toString();
    }
  };
}

},

SESSION {
@Override
InternalFactory<? extends T> scopeFactory(final Class type,
final String name, final InternalFactory<? extends T> factory) {
return new InternalFactory() {
public T create(InternalContext context) {
Strategy strategy = context.getScopeStrategy();
try {
return strategy.findInSession(
type, name, toCallable(context, factory));
} catch (Exception e) {
throw new RuntimeException(e);
}
}

    @Override
    public String toString() {
      return factory.toString();
    }
  };
}

},

WIZARD {
@Override
InternalFactory<? extends T> scopeFactory(final Class type,
final String name, final InternalFactory<? extends T> factory) {
return new InternalFactory() {
public T create(InternalContext context) {
Strategy strategy = context.getScopeStrategy();
try {
return strategy.findInWizard(
type, name, toCallable(context, factory));
} catch (Exception e) {
throw new RuntimeException(e);
}
}

    @Override
    public String toString() {
      return factory.toString();
    }
  };
}

};

Callable<? extends T> toCallable(final InternalContext context,
final InternalFactory<? extends T> factory) {
return new Callable() {
public T call() throws Exception {
return factory.create(context);
}
};
}

abstract InternalFactory<? extends T> scopeFactory(
Class type, String name, InternalFactory<? extends T> factory);

public interface Strategy {

<T> T findInRequest(Class<T> type, String name,
    Callable<? extends T> factory) throws Exception;


<T> T findInSession(Class<T> type, String name,
    Callable<? extends T> factory) throws Exception;


<T> T findInWizard(Class<T> type, String name,
    Callable<? extends T> factory) throws Exception;

}
}

以上java类中定义的DEFAULT、SINGLETON等后面直接加大括号的是什么语法?请大侠解释一下

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 素材场景中光线烘焙后灯光失效
    • ¥15 请教一下各位,为什么我这个没有实现模拟点击
    • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 保护模式-系统加载-段寄存器