![]() Chapter Contents |
![]() Previous |
![]() Next |
| Object Class: _instanceof |
| Syntax | |
| Details |
Syntax |
| return = objectName._instanceof( arg1 ); |
| Argument | Type | Use | Description |
|---|---|---|---|
| return | Numeric | Return | |
| arg1 | Character | Input |
| Details |
Examining the statically-declared (build-time) type of an object may not be an accurate description of the object at run-time. The object variable may actually contain an instance whose type is a subclass of the declared type.
For example, given the class box and its subclass redbox, the _instanceof method can determine that a variable declared as type box actually references the subclass, redbox:
/*Define box class */
box.scl
class box;
endclass
/* Define redbox class with an additional method */
redbox.scl
class redbox;
rbmethod: method;
put 'a method from a redbox';
endmethod;
endclass;
/* An SCL entry declaring a variable of type box, */
/* but containing an object of type redbox. */
X.scl
init:
dcl box b = _new_ redbox();
if (b._instanceof('redbox')) then
put 'Instance of redbox.';
else
put 'Not an instance of redbox.';
return;The SCL code in X.scl will print "Instance of redbox" since
the variable 'b' contains an instance of type redbox.
The _instanceof method can be used to check whether a cast will be successful. Given the same classes, box and redbox, the following code ensures that box b contains an instance of redbox before the cast:
X.scl
init:
dcl box b = _new_ redbox();
dcl redbox rb;
if (b._instanceof('redbox')) then
rb = b._cast('redbox');
else
put 'Invalid cast.';
return;You should always use _instanceof to determine if a cast will be successful.
![]() Chapter Contents |
![]() Previous |
![]() Next |
![]() Top of Page |
Copyright 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.