<?php
class A {
public static function who() {
echo __CLASS__;
}
public static function test() {
static::who(); // Here comes Late Static Bindings
}
}
class B extends A {
public static function who() {
echo __CLASS__;
}
}
B::test(); // Outputs "B"
?>
我想在Java中得到一个等价的...所以类似于
class A {
public static void who(){
System.out.println("A");
};
public static void test(){
who(); //<<< How to implement a static:: thing here???
}
}
class B extends A {
public static void who(){
System.out.println("B");
};
public static void main(String[] args){
B.test(); // Outputs "A" but I want "B"
}
}
编辑:我知道在大多数流行的语言中没有“标准的方法”来做到这一点。我在找黑客之类的。另外,这在C/C++或任何其他流行的OOP语言中可能吗?
这不是为了任何真正的设计上的任何东西。我只是好奇而已。
在Java中不可能。(至少没有丑陋的反射黑客。)
我鼓励你重新考虑你的设计,并依靠适当的对象。
相关问题:
test
,使用test(class
c)
,该test(classc),将定义预期who
方法的类作为参数。test()
类b
.a.test
的实现。在代码中:
class A {
public static void who() {
System.out.println("A");
}
public static void test() {
test(A.class);
}
public static void test(Class<?> c) {
//who(); //<<< How to implement a static:: thing here???
try {
c.getMethod("who").invoke(null); // Call static who on given class.
} catch (Exception e) {
}
}
}
public class B extends A {
public static void who(){
System.out.println("B");
}
public static void test() {
test(B.class);
}
public static void main(String[] args){
A.test(); // Outputs "A"
B.test(); // Outputs "B"
}
}
JRuby Read more here: https://github.com/iconara/mikka. Groovy/Groovy++ Read more here: https://gist.github.com/620439. Clojure Read more here: http://blog.darevay.com/2011/06/clojure-and-akka-a-match
扩展DatabaseObject类的用户类。.. 带有后期静态绑定的DatabaseObject类。..
起初我是一个初学者 我看过很多教程,读过很多例子,甚至试图从JLS来理解这个主题,但我仍然有一些困惑或误解。 让我给你看我看不懂的问题。
静态绑定还是动态绑定? 这显示了什么样的多态性?
问题内容: 我目前正在为我的一个类进行分配,在其中,我必须使用Java语法给出 静态 和 动态绑定的 示例。 我了解基本概念,即静态绑定在编译时发生,而动态绑定在运行时发生,但是我无法弄清楚它们实际上是如何工作的。 我找到了一个在线静态绑定的示例,给出了以下示例: 并且这将显示“ animal is eating”,因为 对的调用使用了静态绑定,但是我不确定 为什么 将其视为静态绑定。 到目前为止
本文向大家介绍PHP面向对象之后期静态绑定功能介绍,包括了PHP面向对象之后期静态绑定功能介绍的使用技巧和注意事项,需要的朋友参考一下 本文将对PHP后期静态绑定功能进行介绍,它主要用于解决在继承范围内引用静态调用的类。 首先来看下面这个例子: 很明显,结果不是我们预期的,这是因为self::取决于定义时所在的类,而不是运行中的类。为了解决这个问题,你可能会在继承类中重写status()方法,更好