本文整理了Java中io.baratine.inject.Key.type()
方法的一些代码示例,展示了Key.type()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Key.type()
方法的具体详情如下:
包路径:io.baratine.inject.Key
类名称:Key
方法名:type
[英]Returns associated type
[中]返回关联的类型
代码示例来源:origin: baratine/baratine
private <T> WebBuilder view(ViewRender<T> view, Key key)
{
_views.add(new ViewRefRender(view, (Class) key.type(), 0));
return this;
}
代码示例来源:origin: baratine/baratine
/**
* Returns raw class of associated type
*
* @return raw class
*/
public Class<T> rawClass()
{
Type type = type();
if (type instanceof Class) {
return (Class) type;
}
else if (type instanceof ParameterizedType) {
ParameterizedType pType = (ParameterizedType) type;
return (Class) pType.getRawType();
}
else {
throw new UnsupportedOperationException(type + " " + type.getClass().getName());
}
}
代码示例来源:origin: baratine/baratine
sb.append("[");
Type type = type();
if (type instanceof Class<?>) {
sb.append(((Class<?>) type).getSimpleName());
代码示例来源:origin: baratine/baratine
static <T> InjectionPoint<T> of(Key<T> key)
{
return new InjectionPointImpl<>(key,
key.type(),
key.rawClass().getSimpleName(),
key.annotations(),
key.rawClass());
}
代码示例来源:origin: baratine/baratine
/**
* Creates a new instance for a given key.
*/
@Override
public <T> T instance(Key<T> key)
{
Objects.requireNonNull(key);
Class<T> type = (Class) key.rawClass();
if (type.equals(Provider.class)) {
TypeRef typeRef = TypeRef.of(key.type());
TypeRef param = typeRef.param(0);
return (T) provider(Key.of(param.type()));
}
Provider<T> provider = provider(key);
if (provider != null) {
return provider.get();
}
else {
return null;
}
}
代码示例来源:origin: baratine/baratine
@Override
public <T> Provider<T> provider(Injector injector,
InjectionPoint<T> ip)
{
Var var = ip.annotation(Var.class);
if (var == null) {
return null;
}
String name = var.value();
if (name.isEmpty()) {
name = ip.name();
}
String defaultValue = var.defaultValue();
return new ProviderVar<T>((InjectorAmp) injector,
(Class<T>) ip.key().type(),
name,
defaultValue);
}
代码示例来源:origin: baratine/baratine
private void buildViews(InjectorAmp inject)
{
for (Binding<ViewRender> binding : inject.bindings(ViewRender.class)) {
try {
ViewRender<?> view = (ViewRender<?>) binding.provider().get();
Key<ViewRender<?>> key = (Key) binding.key();
TypeRef typeRef = TypeRef.of(key.type());
TypeRef renderRef = typeRef.to(ViewRender.class).param(0);
Class<?> type = renderRef != null ? renderRef.rawClass() : Object.class;
_views.add(new ViewRefRender(view, type, binding.priority()));
} catch (Exception e) {
log.log(Level.FINE, e.toString(), e);
}
}
for (Binding<ViewResolver> binding : inject.bindings(ViewResolver.class)) {
try {
ViewResolver<?> view = (ViewResolver<?>) binding.provider().get();
Key<ViewResolver<?>> key = (Key) binding.key();
TypeRef typeRef = TypeRef.of(key.type());
TypeRef resolverRef = typeRef.to(ViewResolver.class).param(0);
Class<?> type = resolverRef != null ? resolverRef.rawClass() : Object.class;
_views.add(new ViewRefResolver(view, type, binding.priority()));
} catch (Exception e) {
log.log(Level.FINE, e.toString(), e);
}
}
}
代码示例来源:origin: baratine/baratine
/**
* default provider
*/
private <T> Provider<T> createProvider(Key<T> key)
{
Class<T> type = (Class<T>) key.rawClass();
if (Provider.class.equals(type)) {
TypeRef subType = TypeRef.of(key.type()).to(Provider.class).param(0);
Key<Object> subkey = Key.of(subType.type(), key.annotationTypes());
return (Provider) new ProviderProvider(key, -10, provider(subkey));
}
else if (Optional.class.equals(type)) {
TypeRef subType = TypeRef.of(key.type()).to(Optional.class).param(0);
Key<Object> subkey = Key.of(subType.type(), key.annotationTypes());
return (Provider) new ProviderOptional(key, -10, provider(subkey));
}
else if (type.isInterface() || Modifier.isAbstract(type.getModifiers())) {
return new ProviderNull(key, -10000, new InjectScopeSingleton());
}
int priority = -10;
// auto-provider is factory
InjectScope<T> scope = findScope(type);
BindingAmp<T> binding = new ProviderConstructor<>(this, key, priority, scope, type);
binding.bind();
return binding.provider();
}
代码示例来源:origin: baratine/baratine
private void init()
{
for (ConvertFrom<?> convertManager
: ConvertManagerImpl.convertManagers()) {
add(convertManager);
}
for (Binding<ConvertFrom<?>> binding
: _injector.bindings(new Key<ConvertFrom<?>>() {})) {
add(binding.provider().get());
}
for (Binding<Convert<?,?>> binding
: _injector.bindings(new Key<Convert<?,?>>() {})) {
TypeRef convertRef = TypeRef.of(binding.key().type())
.to(Convert.class);
Class<?> sourceType = convertRef.param(0).rawClass();
Class<?> targetType = convertRef.param(1).rawClass();
add(sourceType, targetType, (Convert) binding.provider().get());
}
}
内容来源于网络,如有侵权,请联系作者删除!