- java.lang.Object
-
- java.util.Dictionary<K,V>
-
- java.util.Hashtable<Object,Object>
-
- java.util.Properties
-
- java.security.Provider
-
- All Implemented Interfaces:
-
Serializable,Cloneable,Map<Object,Object>
- 已知直接子类:
-
AuthProvider
public abstract class Provider extends Properties
该类代表Java Security API的“提供者”,其中提供者实现了Java Security的部分或全部部分。 提供商可能实施的服务包括:- 算法(如DSA,RSA或SHA-256)。
- 密钥生成,转换和管理功能(如针对特定于算法的密钥)。
一些提供者实现在其操作期间可能会遇到不可恢复的内部错误,例如无法与安全令牌进行通信。 A
ProviderException应用于指示此类错误。请注意,可以使用提供程序来实现Java中的任何安全服务,该安全服务使用可插拔架构,并可选择适合的实现。
服务类型
Attributes Automatically Placed in a Provider Object Name ValueProvider保留供安全框架使用。 这种类型的服务不能被应用程序添加,删除或修改。 以下属性将自动放置在每个Provider对象中:Provider.id nameString.valueOf(provider.getName())Provider.id versionString.valueOf(provider.getVersionStr())Provider.id infoString.valueOf(provider.getInfo())Provider.id classNameprovider.getClass().getName()每个提供者都有一个名称和一个版本字符串。 提供者通常在资源目录
META-INF/services标识一个名为java.security.Provider的文件。 安全提供商通过ServiceLoader机制查询,使用application class loader。提供商可以被配置为使得它们在运行时通过
Security.getProviders()方法被自动安装并使其可用。 配置和安装安全提供程序的机制是实现特定的。- Implementation Note:
-
JDK实现支持通过Java安装目录中的
conf/security/java.security文件静态注册安全提供程序。 JDK运行时自动安装这些提供程序,请参阅“Java加密体系结构(JCA)参考指南”中的The Provider Class ,了解有关特定类型的提供程序,加密服务提供程序的工作原理和安装方式的信息。 - 从以下版本开始:
- 1.1
- 另请参见:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 static classProvider.Service安全服务的描述。
-
Field Summary
-
Fields inherited from class java.util.Properties
defaults
-
-
方法摘要
所有方法 接口方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 voidclear()清除此提供程序,使其不再包含用于查找由提供程序实施的设施的属性。Objectcompute(Object key, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)尝试计算指定密钥及其当前映射值的映射(如果没有当前映射,则null)。ObjectcomputeIfAbsent(Object key, Function<? super Object,? extends Object> mappingFunction)如果指定的键尚未与值相关联(或映射到null),则尝试使用给定的映射函数计算其值,并将其输入到此映射中,除非是null。ObjectcomputeIfPresent(Object key, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)如果指定的密钥的值存在且非空,则尝试计算给定密钥及其当前映射值的新映射。Providerconfigure(String configArg)将提供的配置参数应用于此提供程序实例并返回配置的提供程序。Enumeration<Object>elements()返回此散列表中值的枚举。Set<Map.Entry<Object,Object>>entrySet()返回此提供程序中包含的属性条目的不可修改的Set视图。voidforEach(BiConsumer<? super Object,? super Object> action)对此映射中的每个条目执行给定的操作,直到所有条目都被处理或操作引发异常。Objectget(Object key)返回指定键映射到的值,如果此映射不包含键的映射,则返回null。StringgetInfo()返回提供商及其服务的可读描述。StringgetName()返回此提供程序的名称。ObjectgetOrDefault(Object key, Object defaultValue)返回指定键映射到的值,如果此映射不包含键的映射,则返回defaultValue。StringgetProperty(String key)使用此属性列表中指定的键搜索属性。Provider.ServicegetService(String type, String algorithm)获取描述此提供程序实现该算法或别名的指定类型的服务。Set<Provider.Service>getServices()获取不可修改的此提供程序支持的所有服务的集合。doublegetVersion()已过时。请改用getVersionStr()。StringgetVersionStr()返回此提供程序的版本字符串。booleanisConfigured()检查此提供程序实例是否已配置。Enumeration<Object>keys()返回此散列表中键的枚举。Set<Object>keySet()返回此提供程序中包含的属性键的不可修改的Set视图。voidload(InputStream inStream)从输入流读取属性列表(键和元素对)。Objectmerge(Object key, Object value, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)如果指定的键尚未与值相关联或与null关联,则将其与给定值相关联。Objectput(Object key, Object value)将key属性设置为具有指定的value。voidputAll(Map<?,?> t)将指定地图中的所有映射复制到此提供程序。ObjectputIfAbsent(Object key, Object value)如果指定的键尚未与值相关联(或映射到null)将其与给定值相关联并返回null,否则返回当前值。protected voidputService(Provider.Service s)添加服务。Objectremove(Object key)删除key属性(及其对应的value)。booleanremove(Object key, Object value)仅当指定的密钥当前映射到指定的值时删除该条目。protected voidremoveService(Provider.Service s)删除以前使用putService()添加的服务。Objectreplace(Object key, Object value)只有当目标映射到某个值时,才能替换指定键的条目。booleanreplace(Object key, Object oldValue, Object newValue)仅当当前映射到指定的值时,才能替换指定键的条目。voidreplaceAll(BiFunction<? super Object,? super Object,? extends Object> function)用条目集迭代器返回的顺序,直到所有的条目都被处理或函数抛出一个异常,替换每个条目的值,结果是对该条目调用给定的函数。StringtoString()返回一个带有该提供者的名称和版本字符串的字符串。Collection<Object>values()返回此提供程序中包含的属性值的不可修改的集合视图。-
Methods inherited from interface java.util.Map
entry, of, of, of, of, of, of, of, of, of, of, of, ofEntries
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from class java.util.Properties
clone, contains, containsKey, containsValue, equals, getProperty, hashCode, isEmpty, list, list, load, loadFromXML, propertyNames, rehash, save, setProperty, size, store, store, storeToXML, storeToXML, stringPropertyNames
-
-
-
-
构造方法详细信息
-
Provider
@Deprecated(since="9") protected Provider(String name, double version, String info)
已过时。 改用Provider(String, String, String)。构造具有指定名称,版本号和信息的提供程序。 调用此构造方法等效于调用Provider(String, String, String)与name名称,Double.toString(version),并info。- 参数
-
name- 提供商名称。 -
version- 提供者版本号。 -
info- 提供商及其服务的描述。
-
Provider
protected Provider(String name, String versionStr, String info)
构造具有指定名称,版本字符串和信息的提供程序。版本字符串包含版本号,可选地后跟其他信息由“+”,“ - ”之一分隔。 版本号的格式为:
^[0-9]+(\.[0-9]+)*为了以双倍的形式返回版本号,当有两个以上的组件(如上所述由'。'分隔开)时,只保留前两个组件。 结果字符串然后传递给
Double.valueOf(String)生成版本号,即getVersion()。如果转换失败,将使用值0。
- 参数
-
name- 提供商名称。 -
versionStr- 提供者版本字符串。 -
info- 提供商及其服务的描述。 - 从以下版本开始:
- 9
-
-
方法详细信息
-
configure
public Provider configure(String configArg)
将提供的配置参数应用于此提供程序实例并返回配置的提供程序。 请注意,如果此提供程序无法在现场配置,则将创建并返回新的提供程序。 因此,呼叫者应始终使用返回的提供者。- 实现要求:
-
默认实现抛出
UnsupportedOperationException。 仅当支持配置参数时,子类才应该覆盖此方法。 - 参数
-
configArg- 配置此提供程序的配置信息。 - 结果
- 提供者配置提供的配置参数。
- 异常
-
UnsupportedOperationException- 如果不支持配置参数。 -
NullPointerException- 如果提供的配置参数为空。 -
InvalidParameterException- 如果提供的配置参数无效。 - 从以下版本开始:
- 9
-
isConfigured
public boolean isConfigured()
检查此提供程序实例是否已配置。- 实现要求:
-
默认实现返回true。
如果提供者实例在构造后需要显式的
configure调用,则子类应该覆盖此方法。 - 结果
- 如果不需要进一步配置,则为true,否则为false。
- 从以下版本开始:
- 9
-
getName
public String getName()
返回此提供程序的名称。- 结果
- 该提供商的名称。
-
getVersion
@Deprecated(since="9") public double getVersion()
已过时。 改用getVersionStr()。返回此提供商的版本号。- 结果
- 该提供商的版本号。
-
getVersionStr
public String getVersionStr()
返回此提供程序的版本字符串。- 结果
- 该提供商的版本字符串。
- 从以下版本开始:
- 9
-
getInfo
public String getInfo()
返回提供商及其服务的可读描述。 这可能会返回一个带有相关链接的HTML页面。- 结果
- 提供者及其服务的描述。
-
toString
public String toString()
返回一个带有该提供者的名称和版本字符串的字符串。- 重写:
-
toString在Properties - 结果
- 该字符串具有此提供程序的名称和版本字符串。
-
clear
public void clear()
清除此提供程序,使其不再包含用于查找由提供程序实施的设施的属性。如果启用安全管理器,则其
checkSecurityAccess方法将使用字符串"clearProviderProperties."+name(其中,name是提供程序名称)来调用,以查看是否可以清除此提供程序。- Specified by:
-
clear在接口Map<Object,Object> - 重写:
-
clear在Properties - 异常
-
SecurityException- 如果存在安全管理员,并且其SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问以清除此提供程序 - 从以下版本开始:
- 1.2
-
load
public void load(InputStream inStream) throws IOException
从输入流读取属性列表(键和元素对)。- 重写:
-
load在Properties - 参数
-
inStream- 输入流。 - 异常
-
IOException- 从输入流读取时发生错误。 - 另请参见:
-
Properties.load(java.io.Reader)
-
putAll
public void putAll(Map<?,?> t)
将指定地图中的所有映射复制到此提供程序。 这些映射将替换此提供者对当前指定的Map中的任何键的任何属性。
-
values
public Collection<Object> values()
返回此提供程序中包含的属性值的不可修改的集合视图。
-
put
public Object put(Object key, Object value)
将key属性设置为具有指定的value。如果启用了安全管理器,则其
checkSecurityAccess方法将使用字符串"putProviderProperty."+name(其中name是提供程序名称)进行name,以查看是否可以设置此提供程序的属性值。- Specified by:
-
put在接口Map<Object,Object> - 重写:
-
put在Properties - 参数
-
key- 哈希表键 -
value- 值 - 结果
-
该哈希表中指定键的上一个值,如果没有,
null - 异常
-
SecurityException- 如果存在安全管理员,并且其SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝对设置属性值的访问。 - 从以下版本开始:
- 1.2
- 另请参见:
-
Object.equals(Object),Hashtable.get(Object)
-
putIfAbsent
public Object putIfAbsent(Object key, Object value)
如果指定的键尚未与某个值相关联(或映射到null)将其与给定值相关联并返回null,否则返回当前值。如果安全管理器已启用,则其
checkSecurityAccess方法将使用字符串"putProviderProperty."+name(其中name是提供程序名称)进行name,以查看是否可以设置此提供程序的属性值。- Specified by:
-
putIfAbsent在接口Map<Object,Object> - 重写:
-
putIfAbsent在Properties - 参数
-
key- 指定值与之关联的键 -
value- 与指定键相关联的值 - 结果
-
与指定键相关联的上一个值,如果没有键的映射,
null。 (Anull返回也可以指示该映射以前关联的是null的关键字,如果实现支持空值)。 - 异常
-
SecurityException- 如果存在安全管理员,并且其SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝对设置属性值的访问。 - 从以下版本开始:
- 1.8
-
remove
public Object remove(Object key)
删除key属性(及其对应的value)。如果启用了安全管理器,则其
checkSecurityAccess方法将使用字符串"removeProviderProperty."+name(其中name是提供程序名称)进行name,以查看是否可以删除此提供程序的属性。- Specified by:
-
remove在接口Map<Object,Object> - 重写:
-
remove在Properties - 参数
-
key- 需要删除的关键 - 结果
-
密钥映射到此散列表中的值,如果密钥没有映射,
null - 异常
-
SecurityException- 如果存在安全管理员,并且其SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问以删除此提供程序的属性。 - 从以下版本开始:
- 1.2
-
remove
public boolean remove(Object key, Object value)
仅当指定的密钥当前映射到指定的值时删除该条目。如果启用了安全管理器,则其
checkSecurityAccess方法将使用字符串"removeProviderProperty."+name(其中name是提供程序名称)进行name,以查看是否可以删除此提供程序的属性。- Specified by:
-
remove在接口Map<Object,Object> - 重写:
-
remove在Properties - 参数
-
key- 与指定值相关联的键 -
value- 预期与指定键相关联的值 - 结果
-
true如果该值被删除 - 异常
-
SecurityException- 如果存在安全管理员,并且其SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问以删除此提供程序的属性。 - 从以下版本开始:
- 1.8
-
replace
public boolean replace(Object key, Object oldValue, Object newValue)
仅当当前映射到指定的值时,才能替换指定键的条目。如果安全管理器已启用,则其
checkSecurityAccess方法将使用字符串"putProviderProperty."+name(其中name是提供程序名称)进行name,以查看是否可以设置此提供程序的属性值。- Specified by:
-
replace在接口Map<Object,Object> - 重写:
-
replace在Properties - 参数
-
key- 与指定值相关联的键 -
oldValue- 预期与指定键相关联的值 -
newValue- 要与指定键相关联的值 - 结果
-
true如果该值被替换 - 异常
-
SecurityException- 如果安全管理器存在,并且其SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝对设置属性值的访问。 - 从以下版本开始:
- 1.8
-
replace
public Object replace(Object key, Object value)
只有当目标映射到某个值时,才能替换指定键的条目。如果启用安全管理器,则其
checkSecurityAccess方法将使用字符串"putProviderProperty."+name(其中name是提供程序名称)进行name,以查看是否可以设置此提供程序的属性值。- Specified by:
-
replace在接口Map<Object,Object> - 重写:
-
replace在Properties - 参数
-
key- 与指定值相关联的键 -
value- 与指定键相关联的值 - 结果
-
与指定键相关联的上一个值,如果没有键的映射,
null。 (Anull返回也可以表示该地图以前关联的是null的关键字,如果实现支持空值)。 - 异常
-
SecurityException- 如果存在安全管理员,并且其SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝对设置属性值的访问。 - 从以下版本开始:
- 1.8
-
replaceAll
public void replaceAll(BiFunction<? super Object,? super Object,? extends Object> function)
用条目集迭代器返回的顺序,直到所有的条目都被处理或函数抛出一个异常,替换每个条目的值,结果是对该条目调用给定的函数。如果启用安全管理器,则其
checkSecurityAccess方法将使用字符串"putProviderProperty."+name(其中name是提供程序名称)进行name,以查看是否可以设置此提供程序的属性值。- Specified by:
-
replaceAll在接口Map<Object,Object> - 重写:
-
replaceAll在Properties - 参数
-
function- 应用于每个条目的功能 - 异常
-
SecurityException- 如果存在安全管理员,并且其SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝对设置属性值的访问。 - 从以下版本开始:
- 1.8
-
compute
public Object compute(Object key, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)
尝试计算指定键的映射及其当前映射值(如果没有当前映射,则null)。如果启用安全管理器,则其
checkSecurityAccess方法将使用字符串"putProviderProperty."+name和"removeProviderProperty."+name(其中name是提供程序名称)进行name,以查看是否可以设置此提供程序的属性值并删除此提供程序的属性。- Specified by:
-
compute在接口Map<Object,Object> - 重写:
-
compute在Properties - 参数
-
key- 指定值与之关联的键 -
remappingFunction- 计算值的重映射函数 - 结果
- 与指定键相关的新值,如果没有则为null
- 异常
-
SecurityException- 如果存在安全管理员,并且其SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝对设置属性值的访问或删除属性。 - 从以下版本开始:
- 1.8
-
computeIfAbsent
public Object computeIfAbsent(Object key, Function<? super Object,? extends Object> mappingFunction)
如果指定的键尚未与值相关联(或映射到null),则尝试使用给定的映射函数计算其值,并将其输入到此映射中,除非是null。如果安全管理器已启用,则其
checkSecurityAccess方法将使用字符串"putProviderProperty."+name和"removeProviderProperty."+name(其中name是提供程序名称)进行name,以查看是否可以设置此提供程序的属性值并删除此提供程序的属性。- Specified by:
-
computeIfAbsent在接口Map<Object,Object> - 重写:
-
computeIfAbsent在Properties - 参数
-
key- 要与其关联的指定值的键 -
mappingFunction- 计算值的映射函数 - 结果
- 与指定键相关联的当前(现有或计算)值,如果计算值为空,则为null
- 异常
-
SecurityException- 如果存在安全管理员,并且其SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝对设置属性值的访问并删除属性。 - 从以下版本开始:
- 1.8
-
computeIfPresent
public Object computeIfPresent(Object key, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)
如果指定的密钥的值存在且非空,则尝试计算给定密钥及其当前映射值的新映射。如果启用安全管理器,则其
checkSecurityAccess方法将使用字符串"putProviderProperty."+name和"removeProviderProperty."+name(其中name是提供程序名称)进行name,以查看是否可以设置此提供程序的属性值并删除此提供程序的属性。- Specified by:
-
computeIfPresent在接口Map<Object,Object> - 重写:
-
computeIfPresent在Properties - 参数
-
key- 指定值与之关联的键 -
remappingFunction- 计算值的重映射函数 - 结果
- 与指定键相关的新值,如果没有则为null
- 异常
-
SecurityException- 如果存在安全管理员,并且其SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝对设置属性值的访问或删除属性。 - 从以下版本开始:
- 1.8
-
merge
public Object merge(Object key, Object value, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)
如果指定的键尚未与值相关联或与null关联,则将其与给定值相关联。 否则,将该值替换为给定重映射函数的结果,如果结果为空,则将其移除。 当组合键的多个映射值时,该方法可能是有用的。如果启用了安全管理器,则其
checkSecurityAccess方法将使用字符串"putProviderProperty."+name和"removeProviderProperty."+name(其中name是提供程序名称)进行name,以查看是否可以设置此提供程序的属性值并删除此提供程序的属性。- Specified by:
-
merge在接口Map<Object,Object> - 重写:
-
merge在Properties - 参数
-
key- 结合值与之关联的键 -
value- 要与与密钥相关联的现有值合并的非空值,或者如果没有现有值或空值与密钥相关联,则与密钥相关联 -
remappingFunction- 如果存在重新计算值的重映射功能 - 结果
- 与指定键相关联的新值,如果没有值与该键相关联,则返回null
- 异常
-
SecurityException- 如果安全管理器存在,并且其SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问设置属性值或删除属性。 - 从以下版本开始:
- 1.8
-
get
public Object get(Object key)
描述从类别复制:Hashtable返回指定键映射到的值,如果此映射不包含键的映射,则返回null。更正式地,如果这个地图包含一个
k键到一个值v的映射,这样(key.equals(k)),那么这个方法返回v; 否则返回null。 (最多可以有一个这样的映射。)- Specified by:
-
get在接口Map<Object,Object> - 重写:
-
get在Properties - 参数
-
key- 要返回其关联值的键 - 结果
-
映射指定键的值,如果此映射不包含该键的映射,
null - 另请参见:
-
Hashtable.put(Object, Object)
-
getOrDefault
public Object getOrDefault(Object key, Object defaultValue)
说明从接口Map复制返回指定键映射到的值,如果此映射不包含该键的映射,则返回defaultValue。- Specified by:
-
getOrDefault在接口Map<Object,Object> - 重写:
-
getOrDefault中的Properties - 参数
-
key- 要返回其关联值的键 -
defaultValue- 键的默认映射 - 结果
-
映射指定键的值,如果此映射不包含该键的映射,
defaultValue - 从以下版本开始:
- 1.8
-
forEach
public void forEach(BiConsumer<? super Object,? super Object> action)
说明从界面Map复制对此映射中的每个条目执行给定的操作,直到所有条目都被处理或操作引发异常。 除非实现类另有指定,否则按照进入设置迭代的顺序执行操作(如果指定了迭代顺序)。操作引发的异常被转发给调用者。
-
keys
public Enumeration<Object> keys()
描述从类别复制:Hashtable返回此散列表中键的枚举。 对返回的对象使用枚举方法按顺序获取键。 如果哈希表在结构上被修改,同时枚举了键,则枚举的结果是未定义的。- 重写:
-
keys在Properties - 结果
- 这个哈希表中的键的枚举。
- 另请参见:
-
Enumeration,Hashtable.elements(),Hashtable.keySet(),Map
-
elements
public Enumeration<Object> elements()
描述从类别复制:Hashtable返回此散列表中值的枚举。 对返回的对象使用枚举方法来顺序获取元素。 如果哈希表在结构上被修改,同时枚举了值,则枚举的结果是未定义的。- 重写:
-
elements在Properties - 结果
- 列出这个散列表中的值。
- 另请参见:
-
Enumeration,Hashtable.keys(),Hashtable.values(),Map
-
getProperty
public String getProperty(String key)
描述从类复制:Properties使用此属性列表中指定的键搜索属性。 如果在此属性列表中找不到该键,则会默认属性列表及其默认值递归。 如果找不到属性,该方法返回null。- 重写:
-
getProperty在Properties - 参数
-
key- 属性键。 - 结果
- 该属性列表中具有指定键值的值。
- 另请参见:
-
Properties.setProperty(java.lang.String, java.lang.String),Properties.defaults
-
getService
public Provider.Service getService(String type, String algorithm)
获取描述此提供程序实现该算法或别名的指定类型的服务。 如果没有这样的实现,这个方法返回null。 如果有两个匹配的服务,一个添加到这个提供商使用putService()和一个通过put()添加,通过putService()添加的服务被返回。- 参数
-
type- 请求的类型service(例如,MessageDigest) -
algorithm- 请求的服务的不区分大小写的算法名称(或替代别名)(例如,SHA-1) - 结果
- 描述此提供商的匹配服务的服务,如果不存在此类服务,则为null
- 异常
-
NullPointerException- 如果类型或算法为空 - 从以下版本开始:
- 1.5
-
getServices
public Set<Provider.Service> getServices()
获取不可修改的此提供程序支持的所有服务的集合。- 结果
- 该提供商支持的所有服务的一个不可修改的集合
- 从以下版本开始:
- 1.5
-
putService
protected void putService(Provider.Service s)
添加服务。 如果存在具有相同算法名称的相同类型的服务,并使用putService()添加,则将被新服务替换。 此方法还会以Java Cryptography Architecture (JCA) Reference Guide中描述的格式将关于此服务的信息放在提供商的Hashtable值中。另外,如果有一个安全管理器,它的
checkSecurityAccess方法被调用与字符串"putProviderProperty."+name,其中name是提供者名称,看看是否可以设置此提供程序的属性值。 如果使用默认实现checkSecurityAccess(即,该方法不被覆盖),则这将导致对安全管理器的checkPermission方法的checkPermission,具有SecurityPermission("putProviderProperty."+name)权限。- 参数
-
s- 要添加的服务 - 异常
-
SecurityException- 如果存在安全管理员,并且其SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝对设置属性值的访问。 -
NullPointerException- 如果s为空 - 从以下版本开始:
- 1.5
-
removeService
protected void removeService(Provider.Service s)
删除以前使用putService()添加的服务。 指定的服务将从此提供程序中删除。 它将不再由getService()返回,其信息将从此提供商的Hashtable中删除。另外,如果有一个安全管理器,它的
checkSecurityAccess方法被调用与字符串"removeProviderProperty."+name,其中name是提供者名称,看看是否可以删除此提供程序的属性。 如果使用默认实现checkSecurityAccess(即,该方法不被覆盖),则这将导致对安全管理器的checkPermission方法的checkPermission,具有SecurityPermission("removeProviderProperty."+name)权限。- 参数
-
s- 要删除的服务 - 异常
-
SecurityException- 如果存在安全管理员,并且其SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问以删除此提供程序的属性。 -
NullPointerException- 如果s为空 - 从以下版本开始:
- 1.5
-
-