OSGI中使用DS的类对象问题!

问题描述

DS方式生成component的使用一直有一个问题不求甚解,我写了一个简单的例子来说明。写了一个IHello.java接口publicinterfaceIHello{publicvoidsayHello();}

写了一个Speaker.java类包含IHello接口对象publicclassSpeaker{privateIHelloiHello=null;publicIHellogetiHello(){returniHello;}publicvoidsetiHello(IHelloiHello){System.err.println("iHello----------"+iHello);System.err.println("speaker=="+this);this.iHello=iHello;}voidAAA(){System.err.println("AAA");//this.getiHello().sayHello();}voidBBB(){System.err.println("BBB");}}

其ds实现的component.xml为<?xmlversion="1.0"encoding="UTF-8"?><scr:componentxmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0"activate="AAA"deactivate="BBB"name="Speaker"><implementationclass="com.kedong.test.Speaker"/><referencebind="setiHello"cardinality="1..1"interface="com.kedong.test.IHello"name="helloService"policy="static"/></scr:component>

实现接口的类JapaneseHello.java为publicclassJapaneseHelloimplementsIHello{@OverridepublicvoidsayHello(){//TODOAuto-generatedmethodstubSystem.err.println("connichiwa------------!!!");}}

该类提供服务的component.xml为<scr:componentxmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0"name="JapaneseHello"><implementationclass="Japanesehello.JapaneseHello"/><service><provideinterface="com.kedong.test.IHello"/></service></scr:component>

问题是我知道此时通过Speaker的set方法可以实例化得到IHello的对象JapaneseHello但是如何得到此时的Speaker对象呢,如果Speaker类里面的IHello对象不是静态的话,我每次new出的Speaker对象都是空的?难道只能再将Speaker也作为一个服务通过component.xml提供出来作为服务使用??其实很多情况只是想每个new出来Speaker对象中包含一个JapaneseHello对象而已,如何实现?

解决方案

时间: 2024-11-05 14:51:20

OSGI中使用DS的类对象问题!的相关文章

c++-文件的读写,会将类对象的数据成员写入文件中。能将文件中的信息读入类对象的对应属性中。

问题描述 文件的读写,会将类对象的数据成员写入文件中.能将文件中的信息读入类对象的对应属性中. 情况一:无get,set,无<< >>重载函数的情况下如何将类对象的各个数据成员写入某个文件中(提示:可以在print函数中写代码). 情况二:当程序包含get,set函数而无<< >>重载函数时,如何将类对象的数据成员写入文件中. 情况三:当程序包含<< >>重载函数时,如何将类对象的数据成员写入文件中. 解决方案 大神在哪里,求,求大神

C#在脚步中创建别的脚步类对象cs cs1=new cs();会有警告,如何消除

问题描述 C#在脚步中创建别的脚步类对象cs cs1=new cs();会有警告,如何消除 You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject o

走近VB.Net(一),VB中的族,类,对象(摘录部分MSDN)

对象 走近VB.Net(一),VB中的族,类,对象 VB.Net是面向对象(object-oriented)的,又称为物件(object)导向(oriented).在VB.Net中所有的变量类型都是基于object,而不是VariantDim x As Variant 会被升级为 Dim as object.如果你不理解对象,暂时你可以把他理解为一段数据,他是实际存在于内存的,所以对象以称为实例(instance)而类(class)就是类别,他定义一群对象,是一个对象的群体,并定义方法成员.所以

浅析Ruby中的类对象的概念

  这篇文章主要介绍了Ruby中的类对象的概念,是Ruby学习当中的基础知识,需要的朋友可以参考下 面向对象的程序涉及类和对象. 一个类是蓝本,从个别对象被创建.在面向对象的术语,我们说小明的自行车是被称为自行车类的对象实例. 任何车辆的例子.它包括轮子,马力,燃油或燃气罐容量.这些特点形成的类车辆的数据成员.可以从其他车辆区分这些特征. 车辆也有一定的功能,如停止,驾驶,超速驾驶.即使这些功能形成的类车辆的数据成员.因此,可以定义一个类作为一个组合的特点和功能. 车辆类可以被定义为: ? 1

class-如何简洁明了的描述Android中活动、实例、对象、类、抽象类、接口之间的关系?

问题描述 如何简洁明了的描述Android中活动.实例.对象.类.抽象类.接口之间的关系? 如何简洁明了的描述Android中活动.实例.对象.类.抽象类.接口之间的关系? 解决方案 实例.对象.类.抽象类.接口是java的语法,和android没有关系. 抽象类是不可以实例化并且包含抽象成员的类,一种特殊的类. 类的实例叫做对象 接口约定了一个类必须实现哪些方法 android的活动(activity)是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务 解决方案二: 抽象类和接

class-关于类中建立另一个含有其他类对象的对象

问题描述 关于类中建立另一个含有其他类对象的对象 class FoodSeller:public Person//这个类要弄到animalfood和money类,创建对象来实施相应操作 class Zoo { public: Zoo(int =0,int=0,int=0,int=0); ~Zoo(); bool judgeStatus(); private: FoodSeller people; AnimalEnclosure ae[3]; }; #endif Zoo::Zoo(int p, i

java 初始化 对象-导出类中默认创建基类的子对象

问题描述 导出类中默认创建基类的子对象 读<Java编程思想第四版>第7章复用类,7.2.1初始化基类中, 描述当创建一个导出类对象的时候会自动创建一个基类子对象. 那如果我继承自一个抽象类,那么编译器会怎么处理呢? 解决方案 抽象类是不能实例化的,基类的构造函数只是设置了这个类的属性等,这个对象是一个子类的对象,只是可以用父类指向它而已. 也就是说创建一个子类的时候,没有创建两个对象,而是一个对象.

java-从类对象的方法中接收空指针异常

问题描述 从类对象的方法中接收空指针异常 我有一个自定义视图,我把它声明字了'main'XML文件中: <com.app.DrawView android:id="@+id/my_view" android:layout_height="match_parent" android:layout_width="match_parent" /> 然后在我的activity中的onCreate方法中: setContentView(R.la

java中 静态类.静态方法 。类.方法。 静态类.方法。 对象.方法。他们之间的区别是什么?

问题描述 java中 静态类.静态方法 .类.方法. 静态类.方法. 对象.方法.他们之间的区别是什么? java中 静态类.静态方法 .类.方法. 静态类.方法. 对象.方法.他们之间的区别是什么? 解决方案 [少废话,上代码]: // 外部类,不能是静态的 public class OuterClass { // 静态方法,又称为类方法,属于Test类 public static void staticFun() { } // 非静态方法,又称为实例方法,属于Test类的具体实例 publi