2014-06-18 2 views
3

나는 꽤 자바에 새로운하지만 프로그래밍 아니에요 나는이로 실행 :InetAddress를 직접 인스턴스화

InetAddress localAddress = InetAddress.getLocalHost(); 

그것은 나에게 떨어져 보였다. localAddressInetAddress 유형으로 선언하지만 정적 메소드 인 InetAddress의 인스턴스가 할당되고 있습니까? 아무도 내가 이것을 이해하도록 도울 수 있습니까?

+5

으로 방문하십시오. 공장 방법은 네트워크에서 검색하십시오! –

+0

저는 여기 새로 왔습니다 ... 어떻게 물어봐도 될까요? – user3743473

+0

정말 고마워. 고마워. – user3743473

답변

3

InetAddress 클래스에는 보이지 않는 생성자가 없습니다. InetAddress 객체를 만들려면 사용 가능한 Factory Methods 중 하나를 사용해야합니다.

공장 메소드는 단순히 A A 클래스 정적 메소드가 class.This의 인스턴스 고유 방법 이름을 가지는 경우에 다양한 파라미터리스트와 생성자 과부하 대신 수행 반환된다 협약 많은 결과한다 있습니다 명확한!

세 가지 일반적으로 사용 InetAddress를 팩토리 메소드가 여기에 표시됩니다 : -

static InetAddress getLocalHost() throws UnknownHostException 
static InetAddress getByName(String hostName) throws UnknownHostException 
static InetAddress[] getAllByName(String hostName) throws UnknownHostException 

// Contents taken from Java---The Complete Reference by Herbert Schildt... 

getLocalHost() 메소드는 로컬 호스트를 나타내는의 InetAddress 객체를 반환합니다. 또한 세 가지 방법 중 하나를 사용하여 인스턴스를 만들 수 있습니다. 나는 그것이 당신의 의심을 맑게하기를 바랍니다!

2

java.net.InetAddress은 네트워크에서 정의 주소로 사용되는 핵심 Java 클래스입니다. 이 클래스에는 몇 가지 일반적인 작업을 단순화하는 데 더 많은 정적 메서드가 있습니다. 이 정적 방법은 공장 기준 패턴을 기준으로 설계되었습니다. 자세한 내용은 위키 백과의 팩토리 방법 패턴을 참조하십시오. http://en.wikipedia.org/wiki/Factory_(object-oriented_programming)

3

다음은 비유입니다.

public class Point { 
    int x, y; 

    private Point() {} 

    public static Point getOrigin() { 
     return new Point(); 
    } 
} 

그것은 새로운 Point 객체를 반환하는 정적 메서드 getOrigin()이 있습니다 당신은 클래스 Point 있습니다. 이 표현은 InetAddress 예와 유사합니다

Point p = Point.getOrigin(); 

그것은 많은 Java 응용 프로그램 및 API에 매우 일반적인 패턴이다. 또한 생성 된 인스턴스를 제어 할 수 있습니다 (getOrigin() 메서드는 캐시 할 수 있고 이전에 만든 객체를 반환 할 수 있으며 항상 동일한 객체를 반환 할 수 있습니다.)

+0

생성자의 비헤이비어와 같이 인스턴스화시 클래스의 변수를 설정하려면 어떻게해야할까요? 어떻게 완료 될까요? – user3743473

+0

예. 'getOrigin (int x, int y)'와 같이'new Point (x, y)'를 반환 할 수 있습니다. – helderdarocha

0

이 클래스는 인터넷 프로토콜 . 해 InetAddress의 인스턴스

위한 .. 우리가 어떤 호스트 이름이나 주소가 언급 된 경우 소정의 처리는 네트워크를 통해 실행될 수있는 바와 같이

정적 메소드가 사용되는 IP 주소 및 가능 해당 호스트 이름 이루어져 자세한 정보 및 방법 세부 정보는

http://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html

관련 문제