Java静态方法问题,也许无解,求高人看看有没有思路

guolin guolin 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
比如说现在两个类有继承关系, People类中有一个静态方法getClassName(),可以获取到当前的类名。Teacher类继承自People类。现在在Test方法里,调用Teacher.getClassName(),得到的类名却是People的类名,当然这也很好理解为什么,我就是想问问有没有什么办法可以使Teacher.getClassName()得到的是Teacher的类名。只能在People的getClassName()里面改代码,不可以动Teacher这个类。

以下附上简单代码。


package com.test;

public class People {

public static String getClassName() {
return new Object() {
private String getName() {
String className = getClass().getName();
return className.substring(0, className.indexOf("$"));
}
}.getName();
}

}


package com.test;

public class Teacher extends People{
}


import com.test.Teacher;

public class Test {
public static void main(String[] args) throws Exception {
System.out.println(Teacher.getClassName());
}
}
...全文

相关推荐

Java中的静态方法能否被重写?

* 非静态方法属于类的实例,是可以被子类重写,从而达到多态的效果;   静态方法属于类,是不能被重写,故而也不能实现多态。 *   下面是具体的验证过程   首先,定义一个超类A,里边定义一个静态方法和一个非静态方法: publicclassA{ publicvoidunstaticMethod(){ System.out.println("SuperClassunstaticMethod"); } publicstaticvoidstaticMethod(){ System.out.println("SuperClassstaticMethod"); } }   接下

weixin_38701952

JAVA中堆、栈,静态方法和非静态方法的速度问题

主要介绍了JAVA中堆、栈,静态方法和非静态方法的速度问题,堆和栈得速度性能分析多角度给大家分析,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

weixin_38715008

浅谈java中静态方法的重写问题详解

本篇文章是对java中静态方法的重写问题进行了详细的分析介绍,需要的朋友参考下

weixin_38697940

Java静态方法[Static]

title: Java静态方法[Static] date: 2020-03-24 17:45:16 author: JF blog:https://www.huqifa.com/ tags: – Java categories: – Java Java静态方法[Static] static关键字 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 被static 修饰后的成员变量只有一份 当成员被static修饰之后,多了一种访问方式,除了可以对象调用之外,还可以被类直接调用(类名.静态成员) static的特点 随着类的加载而被加载 优先于对象的存在 被所有的对象所共享的 可以直接被类

weixin_38714653

java synchronized同步静态方法和同步非静态方法的异同

主要介绍了java synchronized同步静态方法和同步非静态方法的异同的相关资料,需要的朋友可以参考下

weixin_38512781
评论 42
收藏 已收藏
分享
返回顶部
guolin
guolin 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
Java SE 62,620 成员 307,251 内容