JavaCast

Description

Converts the data type of a ColdFusion variable to pass as an argument to an overloaded method of a Java object. Use only for scalar and string arguments.

Returns

The variable, as type type.

Category

String functions

Function syntax

JavaCast(type, variable)

See also

CreateObject, cfobject

Parameters

Parameter Description

type

Data type to which to convert variable:

  • boolean
  • int
  • long
  • float
  • double
  • string
  • null

variable

A ColdFusion variable that holds a scalar or string type. Must be "" if type is null.

Usage

Use after creating a Java object with the cfobject tag, before calling one of its methods. If the method takes more than one overloaded argument, you must call JavaCast for each one. Use JavaCast only when a method is overloaded (because its arguments can take more than one data type, not because the method can take a variable number of arguments).

JavaCast cannot be used to cast between complex objects, nor to cast to a super-class.

Use the result of this function only on calls to Java objects, as shown in the following example:

<cfscript>
    x = CreateObject("java", "test.Hello");
    x.init();
    ret = x.sayHello(JavaCast("null", ""));
</cfscript>

Warning: Do not assign the results of JavaCast("null","") to a ColdFusion variable. Unexpected results will occur.

Because there is not a one-to-one correspondence between internally stored ColdFusion types and Java scalar types, some conversions cannot be performed.

Example

The method fooMethod in the class fooClass takes one overloaded argument. The fooClass class is defined as follows:

public class fooClass {
   public fooClass () {
   }
   public String fooMethod(String arg) {
      return "Argument was a String";
   }
   public String fooMethod(int arg) {
      return "Argument was an Integer";
   }

}

Within ColdFusion, you use the following code:

<cfobject
action="create"
    type = "java"
    class = "fooClass" 
    name = obj>

<!--- ColdFusion can treat this as a string or a real number --->
<cfset x = 33>

Perform an explicit cast to an int and call fooMethod:<br>
<cfset myInt = JavaCast("int", x)> 
<cfoutput>#obj.fooMethod(myInt)#</cfoutput>
<br><br>
Perform an explicit cast to a string and call fooMethod:<br>
<cfset myString = javaCast("String", x)> 
<cfoutput>#obj.fooMethod(myString)#</cfoutput>

View comments in LiveDocs