例如,我有一个名为Foo
的类at AuthService.js:8
at Object.<anonymous> (AuthService.js:12)
at Object.invoke (angular.js:4570)
at Object.enforcedReturnValue [as $get] (angular.js:4422)
at Object.invoke (angular.js:4570)
at angular.js:4387
at getService (angular.js:4529)
at Object.invoke (angular.js:4561)
at extend.instance (angular.js:9435)
at nodeLinkFn (angular.js:8540)
我想要的是f在Bar调用时返回Bar的方法,以及Baz调用时的Baz。 Bar和Baz都有相同的构造函数,因此f中的代码两次都是相同的,除了我是否要说新的Bar(...)或新的Baz(...)。有没有办法说新的TypeOfWhateverClassIsCallingMe(...)?
答案 0 :(得分:2)
听起来你想要F-Bounded类型。但是,您仍然必须为所有子类实现它,因为父类不知道子构造函数(“哺乳动物”不知道如何制作“Cat”)。
colorView
这基本上为您提供了编译时的安全性,abstract class Foo[T <: Foo[T]] {
def createMe(): T
}
class Bar extends Foo[Bar] {
override def createMe() = new Bar
}
class Baz extends Foo[Baz] {
override def createMe() = new Baz
}
的所有子项都需要实现一个创建自己类的东西的方法。
深入讨论here。
答案 1 :(得分:1)
假设您想要调用方法的具体子类的类型(我不会将其称为“方法调用者的类型”,而不是“调用者的类型”),您可以这样做
<?php $this->load->view('header'); ?>
<div class="module_item">
<?php foreach ($fields as $session) : ?>
<?php foreach ($session['data'] as $itemData) : ?>
<div class="module_item" title="<?= $itemData['value'] ?>">
<a href="<?= $itemData['url'] ?>"><img src="<?= $itemData['icon'] ?>"/></a>
<a href="<?= $itemData['url'] ?>"><?= $itemData['value']?></a>
</div>
<?php endforeach ?>
<?php endforeach ?>
</div>