有人能解释一下这段代码在Java中的含义吗?
我正在看一个程序,其中有一行我不明白有人能解释一下这段代码在Java中的含义吗?,java,Java,我正在看一个程序,其中有一行我不明白 NoticeBoard notice = (NoticeBoard) o; 那段代码在做什么 该行摘自此处(发布此消息是因为你们可能想了解该行的完整上下文): 它将名为o的可观察对象投射到布告板的实例。最好先检查o是否是NoticeBoard的实例(如果不是,则会得到ClassCastException): 如果可能的话,应该避免类型转换(例如,通过使用Java泛型),但是这里需要遵守观察者接口签名。它将名为o的可观察对象转换为NoticeBoard的实例
NoticeBoard notice = (NoticeBoard) o;
那段代码在做什么
该行摘自此处(发布此消息是因为你们可能想了解该行的完整上下文):
它将名为o的可观察对象投射到布告板的实例。最好先检查o是否是NoticeBoard的实例(如果不是,则会得到ClassCastException):
如果可能的话,应该避免类型转换(例如,通过使用Java泛型),但是这里需要遵守观察者接口签名。它将名为o的可观察对象转换为NoticeBoard的实例。最好先检查o是否是NoticeBoard的实例(如果不是,则会得到ClassCastException):
如果可能的话,应该避免类型转换(例如,通过使用Java泛型),但是这里需要遵守观察者接口签名。您提到的行是一个类型转换<代码>可观察到的o被投射到
布告栏
。
您发布的代码似乎实现了一种观察者可观察的模式(http://en.wikipedia.org/wiki/Observer_pattern). 该项目将收到有关更改的通知(public void update()
),并传递一个通用的可观察对象,在您的情况下,该对象是一个通知栏
对象。
要访问布告栏对象的特定方法,必须对其进行强制转换。您所指的行是强制转换<代码>可观察到的o被投射到
布告栏
。
您发布的代码似乎实现了一种观察者可观察的模式(http://en.wikipedia.org/wiki/Observer_pattern). 该项目将收到有关更改的通知(public void update()
),并传递一个通用的可观察对象,在您的情况下,该对象是一个通知栏
对象。
为了能够访问
布告栏
对象的特定方法,必须对其进行强制转换。非常感谢Daff的解释。非常感谢Daff的解释。
import java.util.Observable;
import java.util.Observer;
class NoticeBoard extends Observable
{
private String theNotice = "";
public void setTheNotice( final String notice )
{
theNotice = notice;
setChanged();
notifyObservers();
}
public String getTheNotice()
{
return theNotice;
}
}
class NoticeBoardObserver implements Observer
{
public void update( Observable o, Object arg )
{
NoticeBoard notice = (NoticeBoard) o;
System.out.println( notice.getTheNotice() );
}
}
class Main
{
public static void main( String args[] )
{
NoticeBoard floor4 = new NoticeBoard();
NoticeBoardObserver anObserver = new NoticeBoardObserver();
floor4.addObserver( anObserver );
floor4.setTheNotice( "Its summer" );
}
}
if(o instanceof NoticeBoard) {
NoticeBoard notice = (NoticeBoard) o;
System.out.println( notice.getTheNotice() );
}