MX7では(?)javaCastが必要だった

先日のCFでtailな間数、MX7では動かないぞ!と突っ込みを受け、MX7をインスコして確認してみました。
うわ、マジ動かんわ。なんで?
エラーメッセージを見てみると、javaオブジェクトのメソッドに渡す引数にはJavaCast関数をかまさなくてはならないようです。
オーバーロードの関係で、JAVA関数の引数は一意に定まらないのが、なんか問題らしいですな。逆に言うと8はこの辺を解決してくれてるんだなぁ。
ともかく、JavaCast関数を知らなかった青い私はいそいそとマニュアルを見ながら書き換えたのでした。

改定後の関数は以下のようになりました。

	<cffunction name="tailread" access="public" output="false" returntype="string">
		<cfargument name="filename" type="string" require="true" />
		<cfset var reader=CreateObject("java", "java.io.RandomAccessFile") />
		<cfset var tailline="" />
		<cfset var readChar="" />
		<cfset var counter=0 />
		<cfset reader.init( JavaCast( "string", "#ARGUMENTS.filename#" ), "r" ) />
		<cftry>
			<cfloop index="counter" from="#reader.length() - 1#" to="0" step="-1">
				<cfset reader.seek( JavaCast( "int", counter ) ) />
				<cfset readChar=reader.read() />
				<cfif readChar is "10" AND tailline neq "" >
					<!--- 改行を見つけたらbreak --->
					<cfbreak />
				<cfelseif readChar neq "10" AND readChar neq "13">
					<!--- 復帰文字、改行文字でなければ読み出し --->
					<cfset tailline=Chr(readChar) & tailline />
				</cfif>
			</cfloop>
			<cfset reader.close() />
			<cfcatch>
				<cfset reader.close() />
				<cfrethrow />
			</cfcatch>
		</cftry>
		<cfreturn tailline />
	</cffunction>