繁体   English   中英

Perl,Inline_Java,Java动态加载对象和方法

[英]Perl, Inline_Java, Java dynamic load of object and method

谁能协助我动态加载对象FooBar并动态调用roquet函数? 我在Perl中有以下代码段:

#!/usr/bin/perl -w 
use Inline Java => << 'End_Of_Java_Code';
class FooBar {
  public FooBar(){}
    public void roquet() {
        System.out.println("HELLO!");
    }
}
End_Of_Java_Code

use Data::Dumper;
use Class::Sniff;
my $sniff = Class::Sniff->new({class=>'FooBar'});
my $num_methods = $sniff->methods;
my $num_classes = $sniff->classes;
my @methods     = $sniff->methods;
my @classes     = $sniff->classes;

my @unreachable = $sniff->unreachable;
foreach my $method (@methods) {
  if ( $method eq "roquet" ) {
    print "$method\n";
  }
}

我尝试了以下方法和变体: 做法:

use Module::Load
my $package = "main::FooBar";
load $package;
$package->new();
$package->$rflmethod;//where rflmethod is the variable: $rflmethod='roquet';

b。 做法:

no strict 'refs';
use Package::Stash;
my $stash = Package::Stash->new('main::FooBar');
my $coderef = $stash->get_symbol('&__new');
$coderef->()

这有效:

my ($class, $method) = qw(FooBar roquet);
my $f = $class->new;
$f->$method;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM