2014-01-05 4 views
0

Это мой класс я пытаюсь создать следующий конструктор:Использование объекта конструктор признака

class StatsView(name: String, manager: AssetManager, statistics: Statistics) extends Node(name) with Control { 
.... 

Это объект, для которого я пытаюсь использовать конструктор узла

object Node { 
    def apply(name: String) = new Spatial(name) with Node 
    def apply() = new Spatial with Node 
} 

trait Node extends Spatial { 

Моя проблема заключается в том, что узел является признаком, вызвавших это сообщение об ошибке компилятора:

trait Node is a trait; does not take constructor arguments 

признак Узел - признак; не принимает аргументов конструктора

класса StatsView (имя: String, менеджер: AssetManager, статистика: Статистика) расширяет узел (имя) с управлением {

Надеется, что вы можете мне помочь.

+1

Черты могут распространяться только на другие черты, а не на классы. – DaoWen

+0

@DaoWen Моя проблема в том, что мне нужно вызвать супер-конструктор узла. – miniwolf

+1

@ DaoWen Да, они могут: https://stackoverflow.com/questions/12854941/why-can-a-scala-trait-extend-a-class –

ответ

4

Проблема в том, что Node(name) - это всего лишь вызов метода, и поэтому не может быть в extends. Вам нужно написать типа так:

class StatsView(name: String, manager: AssetManager, statistics: Statistics) extends 
    Spatial(name) with Node { ... } 

Моя проблема заключается в том, что мне нужно вызвать супер конструктор узла

Поскольку Node не является классом, он не имеет супер конструктор.

+0

Спасибо, что имеет смысл. – miniwolf

Смежные вопросы