2016-04-20 5 views
0

Я расширяю класс DbNodeServiceImpl и пытаюсь переопределить метод с именем public void setProperty(NodeRef nodeRef, QName qname, Serializable value).Вызов пользовательского метода из базового интерфейса

Когда я пытаюсь вызвать метод с помощью интерфейса nodeService, он вызывает метод по умолчанию, который присутствует в DbNodeServiceImpl, а не тот, который я создал. Как я могу реализовать одно и то же? Я просто хочу вызвать свой собственный метод с помощью интерфейса nodeervice.

+2

Как вы создаете экземпляр, используемый для вызова метода? Он должен использовать такой экземпляр, как этот 'NodeService s = new WhateverClassThatExtendsDbNodeServiceImpl()' – dambros

+0

no Я не создаю экземпляр, я просто вставляю службу узлов и вызываю этот метод с помощью этой инъекции. Я просто использую refrences of nodeervice s и вызываю как s.setproperty (x, y, z) –

+0

Показывает инъекцию, затем – dambros

ответ

1

Вы должны определить свой собственный класс, как это:

<bean id="newOwnService" class="MyNewServiceImpl" init-method="init" parent="org.alfresco.repo.node.db.DbNodeServiceImpl" > 
     .... some needed properties.... 

     </bean> 

Тогда где вы называете свой метод:

<bean id="newClass" class="NewClass"> 
     <property name="somethingName" ref="newOwnService"/> 
     </bean> 

в коде:

private NodeService somethingName; 

public setSomethingName(NodeService somethingName){ 
    this.somethingName = somethingName; 
} 
0

Интерфейс вызывает переопределенный метод с одной и той же сигнатурой. Вы не можете переопределить метод два раза в то же реализатор class.You должны размещать код для лучшего объяснения

+0

На самом деле у меня есть класс, который расширяет класс DbNodeServiceImpl.class и DbNodeServiceImpl, реализующий интерфейс nodeervice. Я хочу переопределить метод, определенный в nodeervice и реализованный в DbNodeServiceImpl, но когда я вызываю этот метод, его метод вызова, который присутствует в классе DbNodeServiceImpl, не принадлежит мне. –

+0

, не видя кода, я думаю, что вы вызываете метод по ссылке типа DbNodeServiceImpl, а не на другой класс, который расширяет DbNodeServiceImpl. Покажите мне инструкцию конкретного вызова –

+0

нормально я Посылаю Код U здесь –