Я пишу простой класс интерфейса, как показано ниже. Мне нужно сделать доступным пользователю только один из его методов. Пользователю, использующему этот класс, нужно только возвращаемое значение этого конкретного метода (checkLink
). Поэтому я объявил только этот метод защищенным, чтобы он был виден только пользователю, вызывающему класс Iface
. Поскольку остальные методы класса должны использоваться внутри класса, они были объявлены как частные. Я добавил ключевое слово Static, поскольку эти методы не имеют состояния. Я использовал ключевое слово static final для переменных класса, так как мне нужно было что-то вроде C, например #define.
Поскольку я программист на C, я все еще новичок в мире Java. Взгляните на скелет моего кода и скажите мне, верны ли сделанные заявления в передаче смысла.
package com.prog.Test;
import java.net.*;
import java.io.*;
public class Iface{
private static final int MSG_OK = 0x01;
private static final int MSG_NOK = 0x00;
private static final int MSG_FAIL = 0xFF;
private static byte[] getBytesFromUrl(URL link) throws IOException {
......
return bytes;
}
private static int[] msg_header(byte[] msg) throws Exception
{
int len = msg.length;
System.out.println("len ="+len);
int[] headerMsg =new int [3];
headerMsg[0]= MSG_OK;
......
return headerMsg;
}
private static byte[] Tobyte(int[]src) {
....
}
protected static int checkLink (URL url ) throws IOException {
byte[] rbuffer = null;
byte[] hdr = null;
int status = -1;
try{
rbuffer = getBytesFromUrl(url);
..
..
hdr = Tobyte(msg_header(rbuffer));
...
...
status = 0;
}catch (Exception e) {
System.err.println("Exception: " + e);
}
return status;
}
}
Поэтому, когда я использую этот класс Iface
в приложении, я называю его так:
public class Trial {
public static void main (String [] args ) throws IOException {
URL url = new URL("http://localhost:8000/myfile");
System.out.println("Calling Iface");
int retval = Iface.checkLink(url);
System.out.println("retval ="+retval);
}
}
Я тоже пробовал это (после удаления ключевого слова static
в методе checkLink()
):
public class Trial {
public static void main (String [] args ) throws IOException {
URL url = new URL("http://localhost:8000/myfile");
System.out.println("Calling Iface");
Iface callInterface;
int retval = callInterface.checkLink(url);
System.out.println("retval ="+retval);
}
}
Есть разница?