这句话什么意思?

hudingchen 2007-05-10 06:46:37
Effective java(潘爱民译) 的第二章中有一句话:“静态工厂方法的第三个好处是,与构造函数不同,它们可以返回一个原返回类型的子类型的对象”说的什么意思?比如有类A,有个静态方法method,这句话是说method能够返回A的子类的对象?
如果是这样 怎么实现?

英文版是:“A third advantage of static factory methods is that,unlike constructors,they can return an object of any subtype of their return type.”
...全文
257 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hudingchen 2007-05-10
  • 打赏
  • 举报
回复
哦,明白了,谢谢brooksychen
brooksychen 2007-05-10
  • 打赏
  • 举报
回复
public class Factory{
  public static Sample creator(int which){
  //getClass 产生Sample 一般可使用动态类装载装入类。
  if (which==1)
    return new SampleA();
  else if (which==2)
    return new SampleB();
  }
}
其中SampleA和SampleB是Sample的子类。
hudingchen 2007-05-10
  • 打赏
  • 举报
回复
to Rick_ang(东方未名):
可以举个例子吗?(静态工厂方法可以返回“当前类”子类的对象)
Rick_ang 2007-05-10
  • 打赏
  • 举报
回复
构造函数只能返回“当前”类的对象,而静态工厂方法可以返回“当前类”子类的对象
hudingchen 2007-05-10
  • 打赏
  • 举报
回复
我一直再读书,书上看不懂了才来向大家请教,麻烦你告诉我一下静态工厂的内涵,我万分感谢~~
hudingchen 2007-05-10
  • 打赏
  • 举报
回复
to z_lping(Schemer):
如果你知道,就回答我的问题,不要在书上抄来的东西,就以为懂了。
z_lping 2007-05-10
  • 打赏
  • 举报
回复
哈哈,楼主还是没有看懂所谓静态工厂的内涵,建议还是读书吧。
hudingchen 2007-05-10
  • 打赏
  • 举报
回复
to z_lping(Schemer):
AFactory.getAInstance() 是类A的方法吗?如果是,这个静态方法怎么写才能返回B的实例呢?
z_lping 2007-05-10
  • 打赏
  • 举报
回复
if class B extends class A
if class C extends class A
if class D extends class B

AFactory.getAInstance() may return an instance of class A, B, C, or D.
hudingchen 2007-05-10
  • 打赏
  • 举报
回复
补充一下,前文是说可以用静态工厂方法来创建类的对象,或者用new A()创建对象

62,635

社区成员

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

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