子类调用父类static方法怎么获得子类类名?

fff8965 2010-07-07 07:52:28
父类中有个static方法,用子类类名调用这个static方法,怎么判断是哪个子类调的这个方法?
...全文
790 40 打赏 收藏 转发到动态 举报
写回复
用AI写文章
40 条回复
切换为时间正序
请发表友善的回复…
发表回复
JAVA_WEB 2010-07-09
  • 打赏
  • 举报
回复
把this.getClass().getName()当参数传递到父类的static方法中。
波哥Polly 2010-07-09
  • 打赏
  • 举报
回复
向静态方法传递一个子类实例,通过实例.getClass()来判断具体子类类型
lacus87 2010-07-09
  • 打赏
  • 举报
回复
静态方法又不会多态,调用者都是父类,你何必去管是哪个子类调用的呢
ETCentury 2010-07-08
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 zhangdehai 的回复:]

引用 17 楼 fff8965 的回复:

引用 16 楼 redduke1202 的回复:

向静态方法传递一个子类实例,通过实例.getClass()来判断具体子类类型


这么写每次都传了个多余的参数啊,好像只能这么实现了,传子类的Class对象就行了。


只能这样了。

不过真不知道这样设计有什么必要性,如果你想让静态方法根据调用它的类有不同的表现,这个方法不应……
[/Quote]


这个应该有用!
xiaoqiao_82 2010-07-08
  • 打赏
  • 举报
回复
顶18楼
stormy22 2010-07-08
  • 打赏
  • 举报
回复
来学习
dracularking 2010-07-08
  • 打赏
  • 举报
回复
貌似实例方法理论上应该可以只有一份拷贝,因为方法本身不会有什么区别,调用方式上可能有连接的步骤,就能知道当前调用者 验证一下
焙焙龙 2010-07-08
  • 打赏
  • 举报
回复
在设计超类的时候,根本就不可能知道该类会被哪些已知或者为止的类扩展,这么做完全没有意义
zhangdehai 2010-07-08
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 fff8965 的回复:]

引用 16 楼 redduke1202 的回复:

向静态方法传递一个子类实例,通过实例.getClass()来判断具体子类类型


这么写每次都传了个多余的参数啊,好像只能这么实现了,传子类的Class对象就行了。
[/Quote]

只能这样了。

不过真不知道这样设计有什么必要性,如果你想让静态方法根据调用它的类有不同的表现,这个方法不应该是静态的,应该是个接口,然后再子类中实现就好了。
Dan1980 2010-07-08
  • 打赏
  • 举报
回复
把当前类的实例作为参数传递给方法,这个方法可行。否则请修改设计!
这个用法不太符合OO惯例。static的东西和继承没有多大关系,要使用继承特性时,不要把static搞进来,这只会增加迷惑性。
树成 2010-07-08
  • 打赏
  • 举报
回复
静态方法就算是"子类.方法"这样调用,编译器也会把它变成 "父类.方法",静态方法是完全属于那个类的,它不会被子类继承,不属于子类(其实非静态方法也是如此吧)。
fff8965 2010-07-08
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 redduke1202 的回复:]

向静态方法传递一个子类实例,通过实例.getClass()来判断具体子类类型
[/Quote]

这么写每次都传了个多余的参数啊,好像只能这么实现了,传子类的Class对象就行了。
「已注销」 2010-07-08
  • 打赏
  • 举报
回复
向静态方法传递一个子类实例,通过实例.getClass()来判断具体子类类型
fff8965 2010-07-08
  • 打赏
  • 举报
回复
instance of 后面跟什么啊? 用不了this关键字,没有引用啊。
smileflyer 2010-07-08
  • 打赏
  • 举报
回复
不知道楼主具体要做什么,不过Class的isAssignableFrom方法应该能满足。
smileflyer 2010-07-08
  • 打赏
  • 举报
回复

boolean isAssignableFrom(Class<?> cls)
判定此 Class 对象所表示的类或接口与指定的 Class 参数所表示的类或接口是否相同,或是否是其超类或超接口。


coooliang 2010-07-08
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 closewbq 的回复:]
你知道了能干什么?
[/Quote]
是啊!
fff8965 2010-07-08
  • 打赏
  • 举报
回复
java语法本身没有提供这种机制。。要实现的话只能多传一个没用的参数。
dr_lou 2010-07-08
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 closewbq 的回复:]
你知道了能干什么?
[/Quote]

如果是为了写日志,那没必要这样实现。
closewbq 2010-07-08
  • 打赏
  • 举报
回复
你知道了能干什么?
加载更多回复(20)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧