javax.mail.Transport类:
这是个抽象类,类中有个抽象方法是
public abstract void sendMessage(Message message, Address aaddress[])
throws MessagingException;
官网上说,它是在子类中实现的,
确实找不到它说的子类在哪,是怎么实现的。
高手指点。

解决方案 »

  1.   

    众里寻她百度,结果就在不起眼的地方。呵呵。我们知道了,SMTPTransport实现了sendMessage方法。
    但我们用Transport.send(message);发邮件。并没有用到SMTPTransport类的sendMessage。为什么呢。
      

  2.   

    你都说是抽象类了,说明不可能new出来,他指向的真实对象肯定某一子类(工厂或啥的产生的),这个抽象只是提供一个模板,让子类依循,并提供实现。
      

  3.   

    你都说是抽象类了,说明不可能new出来,他指向的真实对象肯定某一子类(工厂或啥的产生的),这个抽象只是提供一个模板,让子类依循,并提供实现。
    1,但是他也没有new 子类SMTPTransport的实例呀?
    2,还有一点,Transport并不知道是谁,这里是SMTPTransport实现了它的方法,在运行时,怎么就知道去调用呢?
      

  4.   

    这是典型的模板方法模式的应用啦,send(message)可能会做很多发邮件的其他的操作,其中有一步操作就是调用sendMessage。sendMessage实现是与不同的协议有关的,而其他操作与协议无关,所以将sendMessage抽象出来放在子类中实现。去看看源代码就明白啦。