1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
original version by: Nikos Drakos, CBLU, University of Leeds
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Casting Objects</TITLE>
<META NAME="description" CONTENT="Casting Objects">
<META NAME="keywords" CONTENT="users_guide">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="users_guide.css">
<LINK REL="next" HREF="node154.html">
<LINK REL="previous" HREF="node152.html">
<LINK REL="up" HREF="node148.html">
<LINK REL="next" HREF="node154.html">
</HEAD>
<BODY >
<DIV CLASS="navigation"><!--Navigation Panel-->
<A NAME="tex2html2997"
HREF="node154.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html2991"
HREF="node148.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html2985"
HREF="node152.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html2993"
HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<A NAME="tex2html2995"
HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html2998"
HREF="node154.html">Out and Inout arguments</A>
<B> Up:</B> <A NAME="tex2html2992"
HREF="node148.html">Java Bindings</A>
<B> Previous:</B> <A NAME="tex2html2986"
HREF="node152.html">Server Side: Writing SIDL</A>
<B> <A NAME="tex2html2994"
HREF="node14.html">Contents</A></B>
<B> <A NAME="tex2html2996"
HREF="node317.html">Index</A></B>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION03550000000000000000">
Casting Objects</A>
</H1>
<P>
In some cases it is necessary to cast the internal representation of
an object as well as the Java object. (For example, getting an object
from a SIDL array of superclass objects.) In these cases a Java cast is
insufficient. Therefore we have provided two casting functions.
<P>
<A NAME="9062"></A><TT>_cast(object)</TT> is a static function included with every SIDL
class that returns object passed in to cast that class. For example, in
order to cast an object of type <TT>sidl.BaseClass</TT> to
<TT>foo.Bar</TT> simply write <TT>foo.Bar newobj = (foo.Bar) foo.Bar._cast(oldobj)</TT>.
If this is an invalid cast, <TT>_cast</TT> will return <TT>null</TT>.
<P>
The alternative is <TT>_cast2(``ClassName'')</TT>. This is a cast
function that is included with every SIDL object. It performs
basically the same function as <TT>_cast</TT>, but the form is
<TT>object._cast2(``ClassName'')</TT>. It takes a fully qualified
class name. If the cast is invalid, or a class of that name cannot be
found, this function returns <TT>null</TT>.
<P>
Both of these functions
return a <TT>sidl.BaseClass</TT> which then must be Java casted to the
correct Java class type. Also, in casting, they both create a new
Java object that owns a new reference to the IOR object.
<A NAME="9074"></A> In Java you
never have to worry about reference counting, but this does mean that
the pre-cast object still exists and is valid.
<P>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A NAME="tex2html2997"
HREF="node154.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html2991"
HREF="node148.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html2985"
HREF="node152.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html2993"
HREF="node14.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<A NAME="tex2html2995"
HREF="node317.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html2998"
HREF="node154.html">Out and Inout arguments</A>
<B> Up:</B> <A NAME="tex2html2992"
HREF="node148.html">Java Bindings</A>
<B> Previous:</B> <A NAME="tex2html2986"
HREF="node152.html">Server Side: Writing SIDL</A>
<B> <A NAME="tex2html2994"
HREF="node14.html">Contents</A></B>
<B> <A NAME="tex2html2996"
HREF="node317.html">Index</A></B> </DIV>
<!--End of Navigation Panel-->
<ADDRESS>
<br><br>babel-0.10.2<br>users_guide Last Modified 2005-03-23<br><br><a href="http://www.llnl.gov/CASC/components">http://www.llnl.gov/CASC/components</a><br><a href="mailto:components@llnl.gov">components@llnl.gov</a>
</ADDRESS>
</BODY>
</HTML>
|