public abstract class Provider extends Properties
每个提供者都有一个名称和一个版本号,并在每个运行时安装它。
见The Provider Class在“Java加密体系结构API规范与参考”关于特定类型的供应商,加密服务提供程序,如何工作和安装信息。 但是,请注意,可以使用提供程序来实现Java中使用可插拔架构的任何安全服务,并可选择适合的实现。
一些提供者实现在其操作期间可能会遇到不可恢复的内部错误,例如无法与安全令牌进行通信。 A ProviderException应用于指示此类错误。
服务类型Provider保留供安全框架使用。 这种类型的服务不能被应用程序添加,删除或修改。 以下属性将自动放置在每个Provider对象中:
Provider.id name String.valueOf(provider.getName()) Provider.id version String.valueOf(provider.getVersion()) Provider.id info String.valueOf(provider.getInfo()) Provider.id className provider.getClass().getName()
| Modifier and Type | Class and Description |
|---|---|
static class |
Provider.Service
安全服务的描述。
|
defaults| Modifier | Constructor and Description |
|---|---|
protected |
Provider(String name, double version, String info)
构造具有指定名称,版本号和信息的提供程序。
|
| Modifier and Type | Method and Description |
|---|---|
void |
clear()
清除此提供程序,使其不再包含用于查找由提供程序实施的设施的属性。
|
Object |
compute(Object key, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)
尝试计算用于指定键和其当前映射的值的映射(或
null如果没有当前映射)。
|
Object |
computeIfAbsent(Object key, Function<? super Object,? extends Object> mappingFunction)
如果指定的键尚未与值相关联(或映射到
null ),则尝试使用给定的映射函数计算其值,并将其输入到此映射中,除非
null 。
|
Object |
computeIfPresent(Object key, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)
如果指定的密钥的值存在且非空,则尝试计算给定密钥及其当前映射值的新映射。
|
Enumeration<Object> |
elements()
返回此散列表中值的枚举。
|
Set<Map.Entry<Object,Object>> |
entrySet()
返回此提供程序中包含的属性条目的不可修改的Set视图。
|
void |
forEach(BiConsumer<? super Object,? super Object> action)
对此映射中的每个条目执行给定的操作,直到所有条目都被处理或操作引发异常。
|
Object |
get(Object key)
返回到指定键所映射的值,或
null如果此映射包含该键的映射。
|
String |
getInfo()
返回提供商及其服务的可读描述。
|
String |
getName()
返回此提供程序的名称。
|
Object |
getOrDefault(Object key, Object defaultValue)
返回到指定键所映射的值,或
defaultValue如果此映射包含该键的映射。
|
String |
getProperty(String key)
使用此属性列表中指定的键搜索属性。
|
Provider.Service |
getService(String type, String algorithm)
获取描述此提供程序实现该算法或别名的指定类型的服务。
|
Set<Provider.Service> |
getServices()
获取不可修改的此提供程序支持的所有服务的集合。
|
double |
getVersion()
返回此提供商的版本号。
|
Enumeration<Object> |
keys()
返回此散列表中键的枚举。
|
Set<Object> |
keySet()
返回此提供程序中包含的属性键的不可修改的Set视图。
|
void |
load(InputStream inStream)
从输入流读取属性列表(键和元素对)。
|
Object |
merge(Object key, Object value, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)
如果指定的键尚未与值相关联或与null关联,则将其与给定值相关联。
|
Object |
put(Object key, Object value)
将
key属性设置为具有指定的
value 。
|
void |
putAll(Map<?,?> t)
将指定地图中的所有映射复制到此提供程序。
|
Object |
putIfAbsent(Object key, Object value)
如果指定的键尚未与值相关联(或映射到
null ),则将其与给定值相关联并返回
null ,否则返回当前值。
|
protected void |
putService(Provider.Service s)
添加服务。
|
Object |
remove(Object key)
删除
key属性(及其对应的
value )。
|
boolean |
remove(Object key, Object value)
仅当指定的密钥当前映射到指定的值时删除该条目。
|
protected void |
removeService(Provider.Service s)
删除以前使用
putService()添加的服务。
|
Object |
replace(Object key, Object value)
只有当目标映射到某个值时,才能替换指定键的条目。
|
boolean |
replace(Object key, Object oldValue, Object newValue)
仅当当前映射到指定的值时,才能替换指定键的条目。
|
void |
replaceAll(BiFunction<? super Object,? super Object,? extends Object> function)
用条目集迭代器返回的顺序,直到所有的条目都被处理或函数抛出一个异常,替换每个条目的值,结果是对该条目调用给定的函数。
|
String |
toString()
返回带有此提供程序的名称和版本号的字符串。
|
Collection<Object> |
values()
返回此提供程序中包含的属性值的不可修改的集合视图。
|
getProperty, list, list, load, loadFromXML, propertyNames, save, setProperty, store, store, storeToXML, storeToXML, stringPropertyNamesclone, contains, containsKey, containsValue, equals, hashCode, isEmpty, rehash, sizepublic String getName()
public double getVersion()
public String getInfo()
public String toString()
public void clear()
如果启用安全管理器,则使用字符串"clearProviderProperties."+name (其中name是提供程序名称)调用其checkSecurityAccess方法,以查看是否可以清除此提供程序。
clear在界面
Map<Object,Object>
clear在类别
Hashtable<Object,Object>
SecurityException - 如果存在安全管理员,并且其
SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问以清除此提供者
public void load(InputStream inStream) throws IOException
load在类别
Properties
inStream - 输入流。
IOException - 从输入流读取时发生错误。
Properties.load(java.io.Reader)
public void putAll(Map<?,?> t)
public Collection<Object> values()
public Object put(Object key, Object value)
key属性设置为具有指定的value 。
如果启用安全管理器,则使用字符串"putProviderProperty."+name调用其checkSecurityAccess方法,其中name是提供程序名称,以查看是否可以设置此提供程序的属性值。
put在界面
Map<Object,Object>
put在类别
Hashtable<Object,Object>
key - 哈希表键
value - 值
null
SecurityException - 如果存在安全管理员,并且其
SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝对设置属性值的访问。
Object.equals(Object) ,
Hashtable.get(Object)
public Object putIfAbsent(Object key, Object value)
null )将其与给定值相关联并返回null ,否则返回当前值。
如果安全管理器被启用,其checkSecurityAccess方法调用带有字符串"putProviderProperty."+name ,其中name是供应商的名字,看它是否可以设置此provider的属性值。
putIfAbsent在界面
Map<Object,Object>
putIfAbsent在类别
Hashtable<Object,Object>
key - 指定值与之关联的键
value - 与指定键相关联的值
null 。
(A null返回也可以指示以前关联的映射关系为null ,如果实现支持空值)。
SecurityException - 如果安全管理器存在,并且其
SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问设置属性值。
public Object remove(Object key)
key属性(及其对应的value )。
如果启用了安全管理器,则使用字符串"removeProviderProperty."+name调用其checkSecurityAccess方法,其中name是提供程序名称,以查看是否可以删除此提供程序的属性。
remove在界面
Map<Object,Object>
remove在类别
Hashtable<Object,Object>
key - 需要删除的关键
null如果该键没有映射
SecurityException - 如果存在安全管理员,并且其
SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问以删除此提供程序的属性。
public boolean remove(Object key, Object value)
如果安全管理器已启用,则其checkSecurityAccess方法将使用字符串"removeProviderProperty."+name (其中name是提供程序名称)来调用,以查看是否可以删除此提供程序的属性。
remove在界面
Map<Object,Object>
remove在类别
Hashtable<Object,Object>
key - 与指定值相关联的键
value - 预期与指定键相关联的值
true如果该值被删除
SecurityException - 如果存在安全管理员,并且其
SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问以删除此提供程序的属性。
public boolean replace(Object key, Object oldValue, Object newValue)
如果启用了安全管理器,则使用字符串"putProviderProperty."+name调用其checkSecurityAccess方法,其中name是提供程序名称,以查看是否可以设置此提供程序的属性值。
replace在界面
Map<Object,Object>
replace在类别
Hashtable<Object,Object>
key - 与指定值相关联的键
oldValue - 预期与指定键相关联的值
newValue - 与指定键相关联的值
true如果值被替换
SecurityException - 如果安全管理器存在,并且其
SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝对设置属性值的访问。
public Object replace(Object key, Object value)
如果安全管理器被启用,其checkSecurityAccess方法调用带有字符串"putProviderProperty."+name ,其中name是供应商的名字,看它是否可以设置此provider的属性值。
replace在界面
Map<Object,Object>
replace在类别
Hashtable<Object,Object>
key - 与指定值相关联的键
value - 与指定键相关联的值
null 。
(A null返回也可以指示映射以前关联的是null的关键字,如果实现支持空值)。
SecurityException - 如果安全管理器存在,并且其
SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问设置属性值。
public void replaceAll(BiFunction<? super Object,? super Object,? extends Object> function)
如果安全管理器已启用,则其checkSecurityAccess方法将使用字符串"putProviderProperty."+name (其中name是提供程序名称)进行调用,以查看是否可以设置此提供程序的属性值。
replaceAll在界面
Map<Object,Object>
replaceAll在类别
Hashtable<Object,Object>
function - 应用于每个条目的功能
SecurityException - 如果安全管理器存在,并且其
SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝对设置属性值的访问。
public Object compute(Object key, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)
null如果没有当前映射)。
如果启用安全管理器,则使用字符串"putProviderProperty."+name和"removeProviderProperty."+name调用其checkSecurityAccess方法,其中name是提供程序名称,以查看是否可以设置此提供程序的属性值并删除此提供程序的属性。
compute在界面
Map<Object,Object>
compute在类别
Hashtable<Object,Object>
key - 要与其关联的指定值的键
remappingFunction - 计算值的函数
SecurityException - 如果存在安全管理员,并且其
SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问设置属性值或删除属性。
public Object computeIfAbsent(Object key, Function<? super Object,? extends Object> mappingFunction)
null ),则尝试使用给定的映射函数计算其值,并将其输入到此映射中,除非null 。
如果启用安全管理器,则使用字符串"putProviderProperty."+name和"removeProviderProperty."+name (其中name是提供程序名称)调用其checkSecurityAccess方法,以查看是否可以设置此提供程序的属性值并删除此提供程序的属性。
computeIfAbsent在界面
Map<Object,Object>
computeIfAbsent在类别
Hashtable<Object,Object>
key - 要与其关联的指定值的键
mappingFunction - 计算值的函数
SecurityException - 如果安全管理器存在,并且其
SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问设置属性值并删除属性。
public Object computeIfPresent(Object key, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)
如果启用安全管理器,则使用字符串"putProviderProperty."+name和"removeProviderProperty."+name调用其checkSecurityAccess方法,其中name是提供程序名称,以查看是否可以设置此提供程序的属性值并删除此提供程序的属性。
computeIfPresent在界面
Map<Object,Object>
computeIfPresent在类别
Hashtable<Object,Object>
key - 要与其关联的指定值的键
remappingFunction - 计算值的函数
SecurityException - 如果安全管理器存在,并且其
SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问设置属性值或删除属性。
public Object merge(Object key, Object value, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)
如果启用安全管理器,则使用字符串"putProviderProperty."+name和"removeProviderProperty."+name (其中name是提供程序名称)调用其checkSecurityAccess方法,以查看是否可以设置此提供程序的属性值并删除此提供程序的属性。
merge在界面
Map<Object,Object>
merge在类别
Hashtable<Object,Object>
key - 与结果值相关联的键
value - 要与与密钥相关联的现有值合并的非空值,或者如果没有现有值或空值与密钥相关联,则与该密钥相关联
remappingFunction - 重新计算值(如果存在)的功能
SecurityException - 如果存在安全管理员,并且其
SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问设置属性值或删除属性。
public Object get(Object key)
Hashtable复制
null如果此映射包含该键的映射。
更正式地,如果该地图包含从键k到值v ,使得(key.equals(k)) ,则该方法返回v ; 否则返回null 。 (最多可以有一个这样的映射。)
public Object getOrDefault(Object key, Object defaultValue)
Map复制
defaultValue如果此映射包含该键的映射。
getOrDefault在界面
Map<Object,Object>
getOrDefault在类别
Hashtable<Object,Object>
key - 要返回其关联值的键
defaultValue - 键的默认映射
defaultValue
public void forEach(BiConsumer<? super Object,? super Object> action)
Map复制
public Enumeration<Object> keys()
Hashtable复制
keys在类别
Hashtable<Object,Object>
Enumeration , Hashtable.elements() , Hashtable.keySet() , Map
public Enumeration<Object> elements()
Hashtable复制
elements在类别
Hashtable<Object,Object>
Enumeration , Hashtable.keys() , Hashtable.values() , Map
public String getProperty(String key)
Properties复制
null 。
getProperty在类别
Properties
key - 属性键。
Properties.setProperty(java.lang.String, java.lang.String) ,
Properties.defaults
public Provider.Service getService(String type, String algorithm)
putService()和一个通过put()添加,通过putService()添加的服务被返回。
type -的类型service请求(例如, MessageDigest )
algorithm -
algorithm服务的不区分大小写的算法名称(或替代别名)(例如,
SHA-1 )
NullPointerException - 如果类型或算法为空
public Set<Provider.Service> getServices()
protected void putService(Provider.Service s)
putService()添加该服务,则将被新服务替换。
此方法还放置有关供应商的哈希表值这个服务在描述的格式信息Java Cryptography Architecture API Specification & Reference 。
另外,如果有一个安全管理器,它的checkSecurityAccess方法被调用与字符串"putProviderProperty."+name ,其中name是提供者名称,看看是否可以设置此提供程序的属性值。 如果默认实现checkSecurityAccess被使用(即,未重写此方法),那么这会导致对安全管理器的一个电话checkPermission方法有SecurityPermission("putProviderProperty."+name)许可。
s - 要添加的服务
SecurityException - 如果安全管理器存在,并且其
SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝对设置属性值的访问。
NullPointerException - 如果s为空
protected void removeService(Provider.Service s)
putService()添加的服务。
指定的服务将从此提供程序中删除。
它将不再由getService()返回,其信息将从此提供商的Hashtable中删除。
另外,如果有一个安全管理器,它的checkSecurityAccess方法被调用与字符串"removeProviderProperty."+name ,其中name是提供程序的名称,看看是否可以删除此提供程序的属性。 如果默认实现checkSecurityAccess被使用(即,未重写此方法),那么这会导致对安全管理器的一个电话checkPermission方法有SecurityPermission("removeProviderProperty."+name)许可。
s - 要删除的服务
SecurityException - 如果存在安全管理员,并且其
SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问以删除此提供程序的属性。
NullPointerException - 如果s为空
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.