【问题标题】:What is the Perl equivalent of this Java snippet? (Java explanation in Perl terms)这个 Java 片段的 Perl 等价物是什么? (Perl 术语中的 Java 解释)
【发布时间】:2011-06-17 11:08:49
【问题描述】:

谁能帮我把这个 java sn-p 翻译成 perl/Moose 术语?尝试理解 java 对象语法/逻辑,我只知道 perl。

基于 cmets 的编辑:sn-p 来自 xwiki 包 - http://platform.xwiki.org/xwiki/bin/view/DevGuide/WritingComponents... 它太大了,无法分析,那么剩下的代码呢?有可能(仅用于解释 - 忽略 @lines?'@something' 的一般含义是什么?

@Component("hello")
public class HelloWorldScriptService implements ScriptService
{
    @Requirement
    private HelloWorld helloWorld;

    public String greet()
    {
        return this.helloWorld.sayHello();
    }
}

正在寻找类似下一个 perl 片段的内容,但不知道“@Component、@Requirement - 等:(

package HelloWorldScriptService;
use Moose;
sub greet {
    return $self->
}

是否存在一些用 perl-ish 术语解释 java 的文档? (至少,一些基础知识)

【问题讨论】:

  • 注解@Component 和@Requirement 不是Java 库的一部分。为了转码,你必须看看他们应该做什么。如果有帮助,它们看起来就像 Spring 注释。
  • @Component 可能是 spring,但 @Requirement 不是。同意您需要告诉我们这些注释的来源!
  • 啊,所以。好的,thanx - 重新编辑我的问题。

标签: java perl moose


【解决方案1】:

不确定@Component,但这里有更多:

package HelloWorld;
use Moose;

sub say_hello {
   print "Hello";
}

1;

package HelloWorldScriptService;
use Moose;

has 'hello_world' => ( is => 'rw', isa => 'HelloWorld' );

# TODO - will need to instantiate the hello_world object somewhere...

sub greet {
   my ($self) = @_;
   return $self->hello_world->say_hello();
}

1;

由于 helloWorld 是原始属性中的私有属性,您可能希望在名称 'hello_world' 前加上下划线(并添加 init_args => undef) - 这不会像 Java 那样强制隐私,但会显示给正在查看的任何人它在概念上是私有的代码(并防止在 new() 上设置)

【讨论】:

  • 可以使用BUILD实例化:sub BUILD { my $self = shift; $self->hello_world(HelloWorld->new); }
【解决方案2】:

这些注解是一些Dependency Injection框架的元数据(看起来XWiki使用了自己的依赖注入支持,这些注解被它使用了)。

当这个类单独使用时,它们没有任何特殊含义。但是在DI容器内部使用时,@Requirement表示helloWorld的值是由容器注入的,@Component表示该类本身可以注入到其他组件中。

【讨论】:

    猜你喜欢
    • 2011-09-02
    • 2011-03-23
    • 2023-03-25
    • 1970-01-01
    • 2011-03-19
    • 2012-03-20
    • 2011-09-14
    • 1970-01-01
    相关资源
    最近更新 更多