Okay, so now I have a shiny new Inline::Java I want to play with it...
use Inline (
Java => 'STUDY',
STUDY => [qw(java.sql.DriverManager)],
AUTOSTUDY => 1,
);
warn "getLoginTimeout: ". java::sql::DriverManager->getLoginTimeout;
my $drivers_enumeration = java::sql::DriverManager->getDrivers;
warn $drivers_enumeration;
$drivers_enumeration = cast('java.util.Enumeration', $drivers_enumeration);
warn $drivers_enumeration;
while ($drivers_enumeration->hasMoreElements) {
warn "Driver: ".$drivers_enumeration->nextElement;
}
That says:
getLoginTimeout: 0 at test.pl line 19.
main::java::util::Vector::1=HASH(0x194b990) at test.pl line 22.
main::java::util::Enumeration=HASH(0x19a31c0) at test.pl line 24.
without the cast() is says:
main::java::util::Vector::1=HASH(0x194b834) at test.pl line 21.
You are not allowed to invoke method hasMoreElements in class
java.util.Vector$1: null at (eval 14) line 76
at test.pl line 22
java.sql.DriverManager.getDrivers is declared to return an Enumeration.
I think that means that it can return anything it likes so long as
whatever it does return supports the Enumeration interface. Right?
[At this point you should assume, correctly, that I know nothing about
Java. I've only been using it for, oh, about 15 minutes ;-]
But how come I get the "You are not allowed to invoke method" unless I
use the cast() function?
Do I really have to sprinkle casts() all over the place?
Tim.