-
- All Superinterfaces:
-
Mirror
- All Known Subinterfaces:
-
AccessWatchpointRequest
,BreakpointRequest
,ClassPrepareRequest
,ClassUnloadRequest
,ExceptionRequest
,MethodEntryRequest
,MethodExitRequest
,ModificationWatchpointRequest
,MonitorContendedEnteredRequest
,MonitorContendedEnterRequest
,MonitorWaitedRequest
,MonitorWaitRequest
,StepRequest
,ThreadDeathRequest
,ThreadStartRequest
,VMDeathRequest
,WatchpointRequest
public interface EventRequest extends Mirror
表示通知事件的请求。 示例包括BreakpointRequest
和ExceptionRequest
。 当发生启用请求的事件发生时,EventSet
将被放置在EventQueue
上 。 现有事件请求的收集由EventRequestManager
管理。可以通过过滤器控制为事件请求生成的事件数。 过滤器提供事件在事件队列放置之前必须满足的附加约束。 可以通过多次调用过滤添加方法(如
ExceptionRequest.addClassFilter(java.lang.String classPattern)
)来使用多个过滤器。 只有当事件被禁用时,过滤器才会一次添加到事件中。 使用CUT-OFF AND应用多个过滤器,按照它们被添加到请求的顺序。 只有满足所有过滤器的事件才会放在事件队列中。一组可用的过滤器取决于事件请求,一些过滤器的示例是:
- 线程过滤器允许控制生成事件的线程。
- 类过滤器允许控制事件发生的类。
- 实例过滤器允许控制事件发生的实例。
- 计数过滤器可以控制事件报告的次数。
EventRequest
以EventRequest
作为参数的任何方法可能会导致VMDisconnectedException
如果目标VM断开连接,并且VMDisconnectEvent
已经或可以从EventQueue
读取。如果目标虚拟机的内存
EventRequest
,则EventRequest
作为参数的方法可能会抛出VMOutOfMemoryException
。- 从以下版本开始:
- 1.3
- 另请参见:
-
BreakpointEvent
,EventQueue
,EventRequestManager
-
-
Field Summary
Fields Modifier and Type Field 描述 static int
SUSPEND_ALL
发生事件时暂停所有线程static int
SUSPEND_EVENT_THREAD
当事件发生时,只挂起生成事件的线程static int
SUSPEND_NONE
事件发生时暂停线程
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 void
addCountFilter(int count)
在给定数量的事件发生后,限制所要求的事件最多报告一次。void
disable()
与setEnabled(false)
相同。void
enable()
与setEnabled(true)
相同。Object
getProperty(Object key)
使用指定的键返回属性的值。boolean
isEnabled()
确定此事件请求当前是否已启用。void
putProperty(Object key, Object value)
向此请求添加任意键/值“属性”。void
setEnabled(boolean val)
启用或禁用此事件请求。void
setSuspendPolicy(int policy)
确定在目标VM中发生请求的事件时挂起的线程。int
suspendPolicy()
返回一个值,该值描述在目标VM中发生请求的事件时挂起的线程。-
Methods inherited from interface com.sun.jdi.Mirror
toString, virtualMachine
-
-
-
-
字段详细信息
-
SUSPEND_NONE
static final int SUSPEND_NONE
事件发生时暂停线程- 另请参见:
- Constant Field Values
-
SUSPEND_EVENT_THREAD
static final int SUSPEND_EVENT_THREAD
当事件发生时,只挂起生成事件的线程- 另请参见:
- Constant Field Values
-
SUSPEND_ALL
static final int SUSPEND_ALL
发生事件时暂停所有线程- 另请参见:
- Constant Field Values
-
-
方法详细信息
-
isEnabled
boolean isEnabled()
确定此事件请求当前是否已启用。- 结果
-
true
如果启用; 否则为false
。
-
setEnabled
void setEnabled(boolean val)
启用或禁用此事件请求。 当此事件请求被禁用时,事件请求将被忽略,并且如果其任何线程到达事件请求,目标VM将不会被停止。 已禁用的事件请求仍然存在,并包含在事件请求列表中,如EventRequestManager.breakpointRequests()
。- 参数
-
val
-true
如果要启用事件请求;false
否则。 - 异常
-
InvalidRequestStateException
- 如果此请求已被删除。 -
IllegalThreadStateException
- 如果这是一个StepRequest,val
是true
,并且请求中命名的线程已经死亡或尚未启动。
-
enable
void enable()
与setEnabled(true)
相同。- 异常
-
InvalidRequestStateException
- 如果此请求已被删除。 -
IllegalThreadStateException
- 如果这是一个StepRequest,请求中命名的线程已经死机或尚未启动。
-
disable
void disable()
与setEnabled(false)
相同。- 异常
-
InvalidRequestStateException
- 如果此请求已被删除。
-
addCountFilter
void addCountFilter(int count)
在给定数量的事件发生后,限制所要求的事件最多报告一次。 该事件未报告此过滤器的第一个count - 1
次。 要请求一次性事件,请调用此方法计数1。计数达到0后,将应用此请求中的任何后续过滤器。 如果没有这些过滤器导致事件被抑制,则会报告事件。 否则,不报告事件。 在这两种情况下,从未报告此请求的后续事件。
- 参数
-
count
- 生成事件之前的次数。 - 异常
-
InvalidRequestStateException
- 如果此请求当前已启用或已被删除。 过滤器只能添加到禁用的请求中。 -
IllegalArgumentException
- 如果count
小于1。
-
setSuspendPolicy
void setSuspendPolicy(int policy)
确定在目标VM中发生请求的事件时挂起的线程。 使用SUSPEND_ALL
挂起目标虚拟机中的所有线程(默认值)。 使用SUSPEND_EVENT_THREAD
只挂起生成事件的线程。 使用SUSPEND_NONE
暂停线程。通过事件进行的线程暂停具有与明确请求的暂停相同的功能 详见
ThreadReference.suspend()
和VirtualMachine.suspend()
。- 参数
-
policy
- 选定的挂起政策。 - 异常
-
InvalidRequestStateException
- 如果此请求当前已启用或已被删除。 暂停策略只能在禁用请求中设置。 -
IllegalArgumentException
- 如果policy参数包含非法值。
-
suspendPolicy
int suspendPolicy()
返回一个值,该值描述在目标VM中发生请求的事件时挂起的线程。 返回的值是SUSPEND_ALL
,SUSPEND_EVENT_THREAD
,或SUSPEND_NONE
。- 结果
- 当前挂起模式的请求
-
putProperty
void putProperty(Object key, Object value)
向此请求添加任意键/值“属性”。 该属性可由JDI的客户端使用,将应用程序信息与请求相关联; JDI内部不使用这些客户端集属性。get/putProperty
方法提供对每个实例地图的访问。 这不能与Properties
混淆。如果值为null,则此方法将删除该属性。
-
getProperty
Object getProperty(Object key)
使用指定的键返回属性的值。 只有使用putProperty(java.lang.Object, java.lang.Object)
添加的属性将返回非空值。- 结果
- 该属性的值或null
- 另请参见:
-
putProperty(java.lang.Object, java.lang.Object)
-
-