基本的なことで申し訳ないんですが、たとえばパケット送受信の
クラスを書いていて

if(TCP指定なら){
  Socket socket = new Socket(host,port);
}else{
if(UDP指定なら){
  DatagramSocket socket = new DatagramSocket();
}}

とか宣言すると、後のほうでsocketがcannot resolveゴルァとなるのですが、
"宣言されない場合がある"、というときはハネられるんでしょうか?
そもそも、こういう書き方がダメなんでしょうか。