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 ELGamal和paillier计算效率谁快?
    • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
    • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
    • ¥15 Arcgis相交分析无法绘制一个或多个图形
    • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
    • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
    • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
    • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
    • ¥30 3天&7天&&15天&销量如何统计同一行
    • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码