JavaTM Platform
Standard Ed. 6

java.net
클래스 URI

java.lang.Object 
  상위를 확장 java.net.URI
모든 구현된 인터페이스:
Serializable , Comparable <URI >


public final class URI
extends Object
implements Comparable <URI >, Serializable

URI (Uniform Resource Identifier) 참조를 나타냅니다.

후술 하는 몇개의 작은 변경을 제외하면, 이 클래스의 인스턴스는,「RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax」 로 정의되어「RFC 2732: Format for Literal IPv6 Addresses in URLs」 로 수정된 URI 참조를 나타냅니다. 리터럴 IPv6 주소 형식에서는 스코프 ID 도 지원됩니다. 스코프 ID 의 구문이나 사용 방법에 대해서는,여기를 참조해 주세요. 이 클래스는, 컴퍼넌트로부터 또는 캐릭터 라인 형식을 해석해 URI 인스턴스를 작성하기 위한 생성자 , 인스턴스의 각종 컴퍼넌트에 액세스하기 위한 메소드, 및 URI 인스턴스를 정규화, 해결, 상대화하기 위한 메소드를 제공합니다. 이 클래스의 인스턴스는 불변입니다.

URI 구문과 컴퍼넌트

최고정도 레벨의 캐릭터 라인 형식의 URI 참조 (이후는 단지 「URI」라고 한다)의 구문은 다음과 같습니다.
[schema:]schema 고유 부분[#fragment]
여기서, 꺽쇄묶음 [...] (은)는 생략 가능한 컴퍼넌트를 나타내, 문자 :# 는 그 문자 자체를 나타냅니다.

「절대」URI 는 schema를 지정해, 절대가 아닌 URI 는 「상대」라고 불립니다. 또, URI 는 「불투명」일까 「계층적」일까에 의해 분류됩니다.

「불투명」URI 는, schema 고유 부분이 slash (/)로 시작되지 않는 절대 URI 입니다. 불투명 URI 는 그 이상 해석되지 않습니다. 불투명 URI 의 예를 다음에 나타냅니다.

mailto:java-net@java.sun.com
news:comp.lang.java
urn:isbn:096139210x

「계층」URI 는, schema 고유 부분이 slash로 시작되는 절대 URI, 또는 상대 URI (schema를 지정하지 않는 URI)입니다. 계층 URI 의 예를 다음에 나타냅니다.

http://java.sun.com/j2se/1. 3/
docs/guide/collections/designfaq.html#28
../../../demo/jfc/SwingSet2/src/SwingSet2.java
file:///~/calendar

계층 URI 는, 구문에 따라 한층 더 해석됩니다.

[schema:][//기관][패스][? 쿼리][#fragment]
여기서,:,/,? , 및 # 은 그 문자 자체를 나타냅니다. 계층 URI 의 schema 고유 부분은, schema와 fragment 컴퍼넌트의 사이의 문자로 구성됩니다.

계층 URI 의 기관 컴퍼넌트가 지정되고 있는 경우, 그 기관 컴퍼넌트는 「서버 베이스」또는 「레지스트리 베이스」입니다. 서버 베이스 기관은, 잘 알려져 있는 구문에 따라 해석됩니다.

[사용자 정보@]호스트[:포트]
여기서,@ 라고 : 는 그 문자 자체를 나타냅니다. 현재 사용되고 있는 URI schema의 대부분은 서버 베이스입니다. 이와 같이 해석되지 않는 기관 컴퍼넌트는, 레지스트리 베이스라고 보여집니다.

계층 URI 의 패스 컴포넌트는, slash (/)로 시작되는 경우는 절대로 불려 그렇지 않은 경우는 상대로 불립니다. 절대인 계층 URI 또는 기관을 지정하는 계층 URI 의 패스 컴포넌트는 항상 절대입니다.

URI 인스턴스에는, 전부 다음의 9 개의 컴퍼넌트가 있습니다.

Component
schemaString
schema 고유 부분     String
기관String
사용자 정보String
hostString
portint
pathString
쿼리String
fragmentString
지정된 인스턴스에서는, 어느 특정의 컴퍼넌트도 「미정도리」인가 「정의가 끝난 상태」이며, 개별의 형태의 값을 가집니다. 미정도리의 캐릭터 라인 컴퍼넌트는 null 로 나타내져 미정도리의 정수 컴퍼넌트는 -1 으로 나타내집니다. 캐릭터 라인 컴퍼넌트는, 값으로 해서 빈 상태(empty)의 캐릭터 라인을 가지도록(듯이) 정의할 수 있습니다. 이것은, 그 컴퍼넌트가 지정되지 않은 것으로 동등하지는 않습니다.

특정의 컴퍼넌트가 인스턴스로 정의빌려주어지지 않은가는, 표현되는 URI 의 형태에 의해 다릅니다. 절대 URI 에는 schema 컴퍼넌트가 있습니다. 불투명 URI 에는 schema, schema 고유 부분, 및 아마 fragment가 있습니다만, 그 외의 컴퍼넌트는 없습니다. 계층 URI 에는, 항상 패스 (다만 빈 상태(empty)의 경우 있어) 및 schema 고유 부분 (적어도 패스를 포함한다)이 있어, 한층 더 그 외의 컴퍼넌트중 한쪽이 있는 경우가 있습니다. 기관 컴퍼넌트가 존재하고 있어 서버 베이스인 경우, 호스트 컴퍼넌트는 정의됩니다. 사용자 정보와 포트 컴퍼넌트는 정의되는 경우도 있습니다.

URI 인스턴스의 조작

이 클래스에서 지원되는 주요한 조작은, 「정규화」, 「해결」, 및 「상대화」입니다.

「정규화」는, 계층 URI 의 패스 컴포넌트로부터 불필요한 「. 」 및 「..」세그먼트(segment)를 삭제하는 프로세스입니다. 각 「. 」세그먼트(segment)는 단지 삭제됩니다. 「..」세그먼트(segment)는, 「..」이외의 세그먼트(segment)가 선행하는 경우에만 삭제됩니다. 정규화는 불투명 URI 에는 영향을 주지 않습니다.

「해결」이란, 어느 URI 를 다른 「베이스」URI 에 근거해 해결하는 처리입니다. 결과적으로 얻을 수 있는 URI 는, RFC 2396 에 규정된 방법에 근거해, 양쪽 모두의 URI 의 컴퍼넌트로부터 구축됩니다. 구체적으로는, 원의 URI 로 지정되어 있지 않은 컴퍼넌트에 대해서는, 베이스 URI 로부터 취득됩니다. 계층 URI 의 경우, 원의 패스는, 베이스의 패스에 근거해 해결된 뒤, 정규화됩니다. 예를 들어, 다음과 같이 됩니다.

docs/guide/collections/designfaq.html#28          (1)
(을)를 베이스 URI http://java.sun.com/j2se/1. 3/ 에 대해서 해결하면(자), 결과의 URI 는 다음과 같이 됩니다.
http://java.sun.com/j2se/1. 3/docs/guide/collections/designfaq.html#28
상대 URI
../../../demo/jfc/SwingSet2/src/SwingSet2.java    (2)
(을)를 이 결과에 대해서 해결하면(자), 다음과 같이 됩니다.
http://java.sun.com/j2se/1. 3/demo/jfc/SwingSet2/src/SwingSet2.java
절대와 상대의 양쪽 모두의 URI 의 해결, 및 계층 URI 의 경우는 절대와 상대의 양쪽 모두의 패스의 해결이 지원됩니다. URI file:///~calendar 는 절대이므로, 이것을 다른 임의의 URI 에 대해서 해결하면(자), 원의 URI 가 생성될 뿐입니다. 상기의 상대 URI (2)를 상대 베이스 URI (1)에 대해서 해결하면(자), 정규화되고 있어도 상대 인 채의 URI 가 생성됩니다.
demo/jfc/SwingSet2/src/SwingSet2.java

마지막에 「상대화」란, 해결의 역입니다. 임의의 2 개의 정규화가 끝난 URI u 와  v 에 대해, 다음이 성립됩니다.

u. relativize(u. resolve(v)). equals(v)   및
u. resolve(u. relativize(v)). equals(v)  
이 조작은, 가능하면 어디서에서도, 문서의 베이스 URI 에 대해서 상대적이 아니면 안되는 URI 를 포함한 문서를 구축하는 경우에 편리합니다. 예를 들어, 다음의 URI
http://java.sun.com/j2se/1. 3/docs/guide/index.html
(을)를 다음의 베이스 URI 에 대해서 상대화하면(자),
http://java.sun.com/j2se/1. 3
상대 URI docs/guide/index.html 가 생성됩니다.

문자 카테고리

URI 참조의 각종 컴퍼넌트로 허가되는 문자는, RFC 2396 로 엄밀하게 지정되고 있습니다. 다음의 카테고리를 사용해, 이 제약에 대해 설명합니다. 이러한 카테고리의 대부분은 그 스펙으로부터 놓치고 있습니다.
영문자 A 로부터  Z, 및 a 로부터  z 까지의 US-ASCII 영문자
숫자 0 로부터  9 까지의 US-ASCII 10 진수자
영숫자 모든 「영문자」 및 「숫자」문자
미예약     모든 「영숫자」문자, 및 캐릭터 라인 「_-!.~'()*」 안의 문자
구두점 캐릭터 라인 「,;:$&+=」 안의 문자
예약이 끝난 상태 모든 「구두점」문자, 및 캐릭터 라인 「? /[]@」 안의 문자
이스케이프 이스케이프 된 8중창. 즉, 퍼센트 문자 (%)와 거기에 계속되는 2 자리수의 16 진수 (0 - 9,A - F, 및 a - f)로 구성되는 삼중항
그 외 US-ASCII 캐릭터 세트에 포함되지 않고, 제어 문자 (Character.isISOControl 메소드를 사용해 판정)가 아니고, 공백 문자 (Character.isSpaceChar 메소드를 사용해 판정)가 아닌 Unicode 문자    (US-ASCII 로 한정되고 있는 RFC 2396 을 변경한 것)

모든 유효한 URI 문자세트는 「미예약」, 「예약」, 「이스케이프」, 및 「그 외」의 문자로 구성됩니다.

이스케이프 된 8중창, 인용부호, encode, 및 복호화

RFC 2396 에서는, 이스케이프 된 8중창을 사용자 정보, 패스, 쿼리, 및 fragment의 각 컴퍼넌트에 표시할 수가 있습니다. URI 에 있어서의 이스케이프 처리의 목적은, 다음의 2 개입니다. 이러한 목적이기 때문에, 이 클래스에는 다음의 3 개의 관련 조작이 준비되어 있습니다. 이러한 조작은, 다음에 나타내도록(듯이), 이 클래스의 생성자 과 메소드로 공개됩니다.

아이덴티티

임의의 URI u 의 경우에, 항상 다음과 같이 됩니다.
new URI(u. toString()). equals(u) 
빈 상태(empty)의 기관의 전에 2 개의 slash가 있거나 (file:///tmp/  등), 호스트명의 후에 구두점이 있어도 포트가 지정되어 있지 않거나 (http://java.sun.com:  등) 하는 것 같은 장황 구문을 포함하지 않고, 인용부호로 둘러쌀 필요가 있는 문자 이외의 문자를 encode 하지 않는 URI u 의 경우는, 다음과 같이 됩니다.
new URI(u. getScheme(),
        
u. getSchemeSpecificPart(),
        
u. getFragment())
. equals(
u)
모든 경우에 대해
new URI(u. getScheme(),
        
u. getUserInfo(),  u. getAuthority(),
        
u. getPath(),  u. getQuery(),
        
u. getFragment())
. equals(
u)
u 가 계층의 경우
new URI(u. getScheme(),
        
u. getUserInfo(),  u. getHost(),  u. getPort(),
        
u. getPath(),  u. getQuery(),
        
u. getFragment())
. equals(
u)
u 가 계층에서, 기관을 가지지 않는가 서버 베이스의 기관을 가지는 경우

URI, URL, 및 URN

URI 는 Uniform Resource Identifier 이며, URL 는 Uniform Resource Locator 입니다. 따라서, 추상적으로 말하면, 모든 URL 는 URI 입니다만, 모든 URI 가 URL 이다고는인가 선. 이것은, URI 의 다른 부범위인 URN (Uniform Resource Names)가 있기 (위해)때문에입니다. URN 는 자원에 이름을 붙입니다만, 그 검색 방법은 지정하지 않습니다. 전에 나타낸 mailto,news, 및 isbn 의 각 URI 는, URN 의 예입니다.

URI 와 URL 와의 개념상의 구별은, 이 클래스와 URL 클래스의 사이의 상위에 반영되고 있습니다.

이 클래스의 인스턴스는, RFC 2396 로 정의되고 있는 구문으로서의 URI 참조를 나타냅니다. URI 는 절대, 상대의 어느 쪽인가에 됩니다. URI 캐릭터 라인은, schema가 지정되고 있어도 거기에 붙어 고려하지 않고, 일반적인 구문에 따라 해석됩니다. 호스트가 존재하고 있어도 그 검색은 실행되지 않고, schema에 의존하는 스트림 핸들러의 구축도 행해지지 않습니다. 등가성, 해시 처리, 및 비교는, 인스턴스의 문자 내용에 근거해 엄밀하게 정의됩니다. 바꾸어 말하면, URI 인스턴스는 기본적으로, 비교, 정규화, 해결, 및 상대화라고 하는, schema에 의존하지 않는 구문상의 조작을 지원하는, 구조화 된 캐릭터 라인입니다.

이것에 대해,URL 클래스의 인스턴스는, URL 의 구문상의 컴퍼넌트를 나타낼 뿐만 아니라, 그 기술 대상이 되는 자원에의 액세스에 필요한 정보도 일부 갖추고 있습니다. URL 는 절대가 아니면 안됩니다. 즉, 항상 schema를 지정하지 않으면 안됩니다. URL 캐릭터 라인은, 그 schema에 따라 해석됩니다. 어느 URL 에 대해서도 스트림 핸들러가 반드시 확립됩니다. 실제, 사용 가능한 핸들러가 존재하지 않는 schema의 URL 인스턴스를 작성하는 것은 불가능합니다. 등가성과 해시 처리는, schema와 호스트의 인터넷 주소 (존재하는 경우)의 양쪽 모두에 의존합니다. 비교는 정의되지 않습니다. 바꾸어 말하면, URL 는, 해결이라고 하는 구문상의 조작과 호스트의 검색이나 지정된 자원에의 접속의 개방적인 어느 네트워크 입출력 조작을 지원하는, 구조화 된 캐릭터 라인입니다.

도입된 버젼:
1.4
관련 항목:
RFC 2279:UTF-8, transformation format of ISO 10646 ,
RFC 2373:IPv6 Addressing Architecture ,
RFC 2396:Uniform Resource Identifiers (URI) :Generic Syntax ,
RFC 2732:Format for Literal IPv6 Addresses in URLs ,
URISyntaxException , 직렬화 된 형식

생성자 의 개요
URI (String  str)
          지정된 캐릭터 라인을 해석해 URI 를 구축합니다.
URI (String  scheme, String  ssp, String  fragment)
          지정된 컴퍼넌트로부터 URI 를 구축합니다.
URI (String  scheme, String  userInfo, String  host, int port, String  path, String  query, String  fragment)
          지정된 컴퍼넌트로부터 계층 URI 를 구축합니다.
URI (String  scheme, String  host, String  path, String  fragment)
          지정된 컴퍼넌트로부터 계층 URI 를 구축합니다.
URI (String  scheme, String  authority, String  path, String  query, String  fragment)
          지정된 컴퍼넌트로부터 계층 URI 를 구축합니다.
 
메소드의 개요
 int compareTo (URI  that)
          이 URI 를 다른 객체와 비교합니다.
static URI create (String  str)
          지정된 캐릭터 라인을 해석해 URI 를 작성합니다.
 boolean equals (Object  ob)
          이 URI 가 다른 객체와 동일한지 어떤지를 판정합니다.
 String getAuthority ()
          이 URI 의 복호화 된 기관 컴퍼넌트를 돌려줍니다.
 String getFragment ()
          이 URI 의 복호화 된 fragment 컴퍼넌트를 돌려줍니다.
 String getHost ()
          이 URI 의 호스트 컴퍼넌트를 돌려줍니다.
 String getPath ()
          이 URI 의 복호화 된 패스 컴포넌트를 돌려줍니다.
 int getPort ()
          이 URI 의 포트 번호를 돌려줍니다.
 String getQuery ()
          이 URI 의 복호화 된 쿼리컴퍼넌트를 돌려줍니다.
 String getRawAuthority ()
          이 URI 의 그대로의 기관 컴퍼넌트를 돌려줍니다.
 String getRawFragment ()
          이 URI 의 그대로의 fragment 컴퍼넌트를 돌려줍니다.
 String getRawPath ()
          이 URI 의 그대로의 패스 컴포넌트를 돌려줍니다.
 String getRawQuery ()
          이 URI 의 그대로의 쿼리컴퍼넌트를 돌려줍니다.
 String getRawSchemeSpecificPart ()
          이 URI 의 그대로의 schema 고유 부분을 돌려줍니다.
 String getRawUserInfo ()
          이 URI 의 그대로의 사용자 정보 컴퍼넌트를 돌려줍니다.
 String getScheme ()
          이 URI 의 schema 컴퍼넌트를 돌려줍니다.
 String getSchemeSpecificPart ()
          이 URI 의 복호화 된 schema 고유 부분을 돌려줍니다.
 String getUserInfo ()
          이 URI 의 복호화 된 사용자 정보 컴퍼넌트를 돌려줍니다.
 int hashCode ()
          이 URI 의 해시 코드값를 돌려줍니다.
 boolean isAbsolute ()
          이 URI 가 절대인가 어떤가를 통지합니다.
 boolean isOpaque ()
          이 URI 가 불투명한가 어떤가를 통지합니다.
 URI normalize ()
          이 URI 의 패스를 정규화합니다.
 URI parseServerAuthority ()
          이 URI 의 기관 컴퍼넌트 (정의되고 있는 경우)로부터 사용자 정보, 호스트, 및 포트의 각 컴퍼넌트에의 해석을 시도합니다.
 URI relativize (URI  uri)
          지정된 URI 를 이 URI 에 대해서 상대화합니다.
 URI resolve (String  str)
          지정된 캐릭터 라인을 해석해, 그 후 그 캐릭터 라인을 이 URI 에 대해서 해결해, 새로운 URI 를 구축합니다.
 URI resolve (URI  uri)
          지정된 URI 를 이 URI 에 대해서 해결합니다.
 String toASCIIString ()
          이 URI 의 컨텐츠를 US-ASCII 캐릭터 라인으로서 돌려줍니다.
 String toString ()
          이 URI 의 컨텐츠를 캐릭터 라인으로서 돌려줍니다.
 URL toURL ()
          이 URI 로부터 URL 를 구축합니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , finalize , getClass , notify , notifyAll , wait , wait , wait
 

생성자 의 상세

URI

public URI(String  str)
    throws URISyntaxException 
지정된 캐릭터 라인을 해석해 URI 를 구축합니다.

이 생성자 은, 지정된 캐릭터 라인을 해석할 때에,「RFC 2396」의 부록 A 의 문법으로 엄밀하게 따릅니다. 다만, 다음의 점에 관해서는, 문법에 따르지 않습니다.

파라미터:
str - URI 에 해석되는 캐릭터 라인
예외:
NullPointerException - strnull 의 경우
URISyntaxException - 상기의 변경에 의해 확장된 RFC 2396 에, 지정된 캐릭터 라인이 위반하는 경우

URI

public URI(String  scheme,
           String  userInfo,
           String  host,
           int port,
           String  path,
           String  query,
           String  fragment)
    throws URISyntaxException 
지정된 컴퍼넌트로부터 계층 URI 를 구축합니다.

schema가 지정되어 패스도 지정되었을 경우, 그 패스는 빈 상태(empty)인지, slash 문자 (「/」)로 시작되지 않으면 안됩니다. 그렇지 않은 경우, 새로운 URI 의 컴퍼넌트는, 대응하는 파라미터에 null 를 건네주는지,port 파라미터의 경우는 -1 을 건네주어, 미정도리대로 되는 일이 있습니다.

이 생성자 은 우선, 다음과 같이 지정된 컴퍼넌트로부터 URI 캐릭터 라인을 구축합니다만, 그 때,「RFC 2396」의 섹션 5. 2 의 스텝  7 에 기재되어 있는 규칙에 따릅니다.

  1. 최초, 결과 캐릭터 라인은 비우고 있다.

  2. schema가 지정되고 있는 경우, 그 schema가 결과의 말미에 추가되어 그 후에 구두점 문자 (「:」)가 추가된다.

  3. 사용자 정보, 호스트, 또는 포트가 지정되고 있는 경우, 캐릭터 라인「//」이 말미에 추가된다.

  4. 사용자 정보가 지정되고 있는 경우, 그 사용자 정보가 말미에 추가되어 그 후에 단가 기호 (「@」)가 추가된다. 「미예약」, 「구두점」, 「이스케이프」, 「그 외」목의 카테고리에도 포함되지 않는 문자는 모두,인용부호로 둘러싸인다.

  5. 호스트가 지정되고 있는 경우, 그 호스트가 말미에 추가된다. 호스트가 리터럴 IPv6 주소이지만, 꺽쇄묶음 (「[」「]」)으로 둘러싸이지 않은 경우는, 꺽쇄묶음이 추가된다.

  6. 포트 번호가 지정되고 있는 경우, 구두점 문자 (「:」)가 말미에 추가되어 그 후에 그 10 진수의 포트 번호가 추가된다.

  7. 패스가 지정되고 있는 경우, 그 패스가 말미에 추가된다. 「미예약」, 「구두점」, 「이스케이프」, 「그 외」목의 카테고리에도 포함되지 않고, slash 문자 (「/」), 단가 기호 (「@」)의 어느 쪽과도 동일하지 않은 문자는 모두, 인용부호로 둘러싸인다.

  8. 쿼리가 지정되고 있는 경우, 물음표 문자 (「?」)이 말미에 추가되어 그 후에 그 쿼리가 추가된다. 적정한 URI 문자가 아닌 문자는 모두, 인용부호로 둘러싸인다.

  9. 마지막으로, fragment가 지정되고 있는 경우, 해시 문자 (「#」)가 말미에 추가되어 그 후에 그 fragment가 추가된다. 적정한 URI 문자가 아닌 문자는 모두, 인용부호로 둘러싸인다.

결과적으로 얻을 수 있는 URI 캐릭터 라인이 해석됩니다만, 이 해석은,URI(String) 생성자 을 호출한 뒤, 그 결과에 대해서 parseServerAuthority() 메소드를 호출했는지와 같이 행해집니다. 이것에 의해,URISyntaxException 가 throw 될 가능성이 있습니다.

파라미터:
scheme - schema명
userInfo - 사용자명과 인증 정보
host - 호스트명
port - 포트 번호
path - 패스
query - 쿼리
fragment - fragment
예외:
URISyntaxException - schema와 패스의 양쪽 모두가 지정되고 있지만 패스가 상대의 경우, 지정된 컴퍼넌트로부터 구축된 URI 캐릭터 라인이 RFC 2396 에 위반하는 경우, 또는 캐릭터 라인의 기관 컴퍼넌트가 존재하지만 서버 베이스의 기관으로서 해석할 수 없는 경우

URI

public URI(String  scheme,
           String  authority,
           String  path,
           String  query,
           String  fragment)
    throws URISyntaxException 
지정된 컴퍼넌트로부터 계층 URI 를 구축합니다.

schema가 지정되어 패스도 지정되었을 경우, 그 패스는 빈 상태(empty)인지, slash 문자 (「/」)로 시작되지 않으면 안됩니다. 그렇지 않은 경우, 새로운 URI 의 컴퍼넌트는, 대응하는 파라미터에 null 를 건네주어, 미정도리대로 되는 일이 있습니다.

이 생성자 은 우선, 다음과 같이 지정된 컴퍼넌트로부터 URI 캐릭터 라인을 구축합니다만, 그 때,「RFC 2396」의 섹션 5. 2 의 스텝  7 에 기재되어 있는 규칙에 따릅니다.

  1. 최초, 결과 캐릭터 라인은 비우고 있다.

  2. schema가 지정되고 있는 경우, 그 schema가 결과의 말미에 추가되어 그 후에 구두점 문자 (「:」)가 추가된다.

  3. 기관이 지정되고 있는 경우, 캐릭터 라인「//」이 말미에 추가되어 그 후에 그 기관이 추가된다. 기관에 리터럴 IPv6 주소가 포함되는 경우, 그 주소를 꺽쇄묶음 (「[」「]」)으로 둘러쌀 필요가 있다. 「미예약」, 「구두점」, 「이스케이프」, 「그 외」목의 카테고리에도 포함되지 않고, 단가 기호 (「@」)와 동일하지 않은 문자는 모두,인용부호로 둘러싸인다.

  4. 패스가 지정되고 있는 경우, 그 패스가 말미에 추가된다. 「미예약」, 「구두점」, 「이스케이프」, 「그 외」목의 카테고리에도 포함되지 않고, slash 문자 (「/」), 단가 기호 (「@」)의 어느 쪽과도 동일하지 않은 문자는 모두, 인용부호로 둘러싸인다.

  5. 쿼리가 지정되고 있는 경우, 물음표 문자 (「?」)이 말미에 추가되어 그 후에 그 쿼리가 추가된다. 적정한 URI 문자가 아닌 문자는 모두, 인용부호로 둘러싸인다.

  6. 마지막으로, fragment가 지정되고 있는 경우, 해시 문자 (「#」)가 말미에 추가되어 그 후에 그 fragment가 추가된다. 적정한 URI 문자가 아닌 문자는 모두, 인용부호로 둘러싸인다.

결과적으로 얻을 수 있는 URI 캐릭터 라인이 해석됩니다만, 이 해석은,URI(String) 생성자 을 호출한 뒤, 그 결과에 대해서 parseServerAuthority() 메소드를 호출했는지와 같이 행해집니다. 이것에 의해,URISyntaxException 가 throw 될 가능성이 있습니다.

파라미터:
scheme - schema명
authority - 기관
path - 패스
query - 쿼리
fragment - fragment
예외:
URISyntaxException - schema와 패스의 양쪽 모두가 지정되고 있지만 패스가 상대의 경우, 지정된 컴퍼넌트로부터 구축된 URI 캐릭터 라인이 RFC 2396 에 위반하는 경우, 또는 캐릭터 라인의 기관 컴퍼넌트가 존재하지만 서버 베이스의 기관으로서 해석할 수 없는 경우

URI

public URI(String  scheme,
           String  host,
           String  path,
           String  fragment)
    throws URISyntaxException 
지정된 컴퍼넌트로부터 계층 URI 를 구축합니다.

컴퍼넌트는,null 를 건네주어 미정도리대로 되는 일이 있습니다.

이 간이 생성자 은, 다음과 같이 7 개의 인수의 생성자 을 호출하는것 같이 동작합니다.

new URI (scheme,  null,  host,  -1,  path,  null,  fragment);

파라미터:
scheme - schema명
host - 호스트명
path - 패스
fragment - fragment
예외:
URISyntaxException - 지정된 컴퍼넌트로부터 구축된 URI 캐릭터 라인이 RFC 2396 에 위반하는 경우

URI

public URI(String  scheme,
           String  ssp,
           String  fragment)
    throws URISyntaxException 
지정된 컴퍼넌트로부터 URI 를 구축합니다.

컴퍼넌트는,null 를 건네주어 미정도리대로 되는 일이 있습니다.

이 생성자 은 우선, 다음과 같이 지정된 컴퍼넌트를 사용해 캐릭터 라인 형식의 URI 를 구축합니다.

  1. 최초, 결과 캐릭터 라인은 비우고 있다.

  2. schema가 지정되고 있는 경우, 그 schema가 결과의 말미에 추가되어 그 후에 구두점 문자 (「:」)가 추가된다.

  3. schema 고유 부분이 지정되고 있는 경우, 그 schema 고유 부분이 말미에 추가된다. 적정한 URI 문자가 아닌 문자는 모두,인용부호로 둘러싸인다.

  4. 마지막으로, fragment가 지정되고 있는 경우, 해시 문자 (「#」)가 캐릭터 라인의 말미에 추가되어 그 후에 그 fragment가 추가된다. 적정한 URI 문자가 아닌 문자는 모두, 인용부호로 둘러싸인다.

새로운 URI 인스턴스를 작성하기 위해서 결과적으로 얻을 수 있는 URI 캐릭터 라인이 해석됩니다만, 이 해석은,URI(String) 생성자 을 호출했는지와 같이 행해집니다. 이것에 의해,URISyntaxException 가 throw 될 가능성이 있습니다.

파라미터:
scheme - schema명
ssp - schema 고유 부분
fragment - fragment
예외:
URISyntaxException - 지정된 컴퍼넌트로부터 구축된 URI 캐릭터 라인이 RFC 2396 에 위반하는 경우
메소드의 상세

create

public static URI  create(String  str)
지정된 캐릭터 라인을 해석해 URI 를 작성합니다.

이 간이 팩토리 메소드는,URI(String) 생성자 을 호출했는지와 같이 동작합니다. 이 생성자 으로부터 throw 된 URISyntaxException 는 모두, 캐치 되어 새로운 IllegalArgumentException 객체내에 랩 된 뒤, throw 됩니다.

이 메소드는, 프로그램내에서 선언된 URI 정수와 같이, 주어진 캐릭터 라인이 적정한 URI 인 것을 미리 알고 있기 위해서(때문에), 캐릭터 라인이 그처럼 해석되지 않는 경우는 프로그래밍 에러로 간주해지는 것 같은 상황으로 사용하기 위해서 제공되고 있습니다. 사용자 입력이나, 에러가 포함될 가능성의 높은 그 외의 어떠한 소스에 근거해 URI 가 구축되는 것 같은 상황에서는,URISyntaxException 를 직접 throw 하는 생성자 을 사용하도록 해 주세요.

파라미터:
str - URI 에 해석되는 캐릭터 라인
반환값:
새로운 URI
예외:
NullPointerException - strnull 의 경우
IllegalArgumentException - 지정된 캐릭터 라인이 RFC 2396 에 위반하는 경우

parseServerAuthority

public URI  parseServerAuthority()
                         throws URISyntaxException 
이 URI 의 기관 컴퍼넌트 (정의되고 있는 경우)로부터 사용자 정보, 호스트, 및 포트의 각 컴퍼넌트에의 해석을 시도합니다.

이 URI 의 기관 컴퍼넌트가 벌써 서버 베이스로서 인식되고 있는 경우에는, 그것은 벌써 해석되어 사용자 정보, 호스트, 포트의 각 컴퍼넌트 로 분리되고 있습니다. 이 경우, 또는 이 URI 가 기관 컴퍼넌트를 가지지 않는 경우에는, 이 메소드는 이 URI 를 그대로 돌려줍니다.

그렇지 않은 경우, 이 메소드는 기관 컴퍼넌트로부터 사용자 정보, 호스트, 및 포트의 각 컴퍼넌트에의 해석을 한번 더 시도해 기관 컴퍼넌트를 그처럼 해석할 수 없었던 이유를 설명하는 예외를 throw 합니다.

이 메소드가 제공되고 있는 것은,「RFC 2396」 으로 지정되고 있는 총칭 URI 구문이, 부정한 서버 베이스 기관과 적정한 레지스트리 베이스 기관을 항상 구별할 수 있다고는 할 수는 없기 때문입니다. 이 때문에, 그것은, 전자의 케이스의 일부를 후자의 케이스로서 취급하지 않으면 안됩니다. 예를 들어, URI 캐릭터 라인「//foo:bar」내의 기관 컴퍼넌트는, 적정한 서버 베이스 기관이 아닙니다만, 레지스트리 베이스 기관으로서는 적정입니다.

URN, URL 의 어느 쪽인지인 것을 알 수 있고 있는 URI 를 조작하는 경우와 같은, 많은 일반적인 상황에서는, 사용되는 계층 URI 는 항상 서버 베이스가 됩니다. 따라서, 그것들은 그처럼 해석되는지, 에러로서 처리될까의 어느 쪽인지 나오지 않으면 안됩니다. 이러한 경우,

URI u = new URI(str). parseServerAuthority();

(와)과 같은 문장을 사용하면,u 가 참조하는 URI 에 기관 컴퍼넌트가 포함되는 경우에, 그 기관이 항상 적절한 사용자 정보, 호스트, 포트의 각 컴퍼넌트를 포함한 서버 베이스 기관인 것을 보증할 수 있습니다. 또, 이 메소드를 호출하면, 기관을 그처럼 해석할 수 없었던 경우에도, throw 된 예외에 근거해 적절한 진단 메세지를 확실히 발행할 수 있습니다.

반환값:
기관 필드가 서버 베이스 기관으로서 해석된 URI
예외:
URISyntaxException - 이 URI 의 기관 컴퍼넌트가 지정되고 있지만, RFC 2396 에 따라 서버 베이스 기관으로서 해석할 수 없는 경우

normalize

public URI  normalize()
이 URI 의 패스를 정규화합니다.

이 URI 가 불투명한 경우, 또는 그 패스가 벌써 정규화된 형식이 되어 있는 경우는, 이 URI 가 돌려주어집니다. 그렇지 않은 경우는, 이 URI 와 같은 새로운 URI 가 구축됩니다. 다만, 그 패스가「RFC 2396」의 섹션 5. 2, 스텝 6, 서브 스텝  c 로부터  f 에 준거한 방법으로 이 URI 의 패스를 정규화해 구할 수 있는 경우를 제외합니다. 다음과 같이 됩니다.

  1. 모든「.」세그먼트(segment)가 삭제된다.

  2. 「..」세그먼트(segment)의 직전에「..」이외의 세그먼트(segment)가 존재하는 경우, 그 양쪽 모두의 세그먼트(segment)가 삭제된다. 이 순서가 해당하지 않게 될 때까지 반복해진다.

  3. 패스가 상대이며, 그 최초의 세그먼트(segment)에 구두점 문자 (「:」)가 포함되어 있는 경우, 그 전에「.」세그먼트(segment)가 추가된다. 이것에 의해,「a:b/c/d」와 같은 패스를 포함한 상대 URI 가, schema「a」와 schema 고유 부분「b/c/d」를 가지는 불투명 URI 로서 나중에 재차 해석되어 버리는 것을 막을 수가 있다. (RFC 2396 로부터의 변경)

정규화된 패스는, 삭제를 가능하게 하는「..」(이)가 아닌 선행의 세그먼트(segment)가 불충분했던 경우, 1 개(살) 이상의「..」세그먼트(segment)로 시작됩니다. 정규화된 패스가「.」세그먼트(segment)로 시작되는 것은, 상기의 순서 3 으로 그러한 세그먼트(segment)가 삽입되었을 경우입니다. 그 이외의 경우는, 정규화된 패스에「.」세그먼트(segment)나「..」세그먼트(segment)가 포함될 것은 없습니다.

반환값:
이 URI 와 등가인 URI. 다만, 그 패스는 정규화된 형식이 되어 있다

resolve

public URI  resolve(URI  uri)
지정된 URI 를 이 URI 에 대해서 해결합니다.

지정된 URI 가 벌써 절대인 경우, 또는 이 URI 가 불투명한 경우는, 지정된 URI 가 돌려주어집니다.

지정된 URI 의 fragment 컴퍼넌트가 정의가 끝난 상태이며, 패스 컴포넌트가 빈 상태(empty)이며, schema, 기관, 쿼리의 각 컴퍼넌트가 지정되지 않은 경우, 지정된 fragment를 가지지만, 그 이외의 모든 컴퍼넌트는 이 URI 의 값에 동일한 것 같은 URI 가 돌려주어집니다. 이것에 의해,「#foo」와 같은 단독의 fragment 참조를 나타내는 URI 를 베이스 URI 에 근거해 해석할 수 있게 되므로 편리합니다.

그렇지 않은 경우, 이 메소드는,「RFC 2396」의 섹션 5. 2 에 적합하는 방법으로 새로운 계층 URI 를 구축합니다. 다음과 같이 됩니다.

  1. 이 URI 의 schema와 지정된 URI 의 쿼리 및 fragment 컴퍼넌트를 사용해, 새로운 URI 가 구축된다.

  2. 지정된 URI 에 기관 컴퍼넌트가 있는 경우, 새로운 URI 의 기관과 패스는 지정된 URI 로부터 놓친다.

  3. 그렇지 않은 경우, 새로운 URI 의 기관 컴퍼넌트가 이 URI 로부터 카피되어 그 패스는 다음과 같이 해 구할 수 있다.

    1. 지정된 URI 의 패스가 절대의 경우, 새로운 URI 의 패스는 지정된 URI 로부터 놓친다.

    2. 그 이외의 경우, 지정된 URI 의 패스는 상대이므로, 이 URI 의 패스에 근거해 지정된 URI 의 패스를 해결하는 것으로, 새로운 URI 의 패스가 계산된다. 이것을 실시하려면 , 이 URI 의 패스 (존재하는 경우)의 마지막 세그먼트(segment) 이외의 모든 세그먼트(segment)가 지정된 URI 의 패스에 연결한 뒤, 그 결과를 normalize 메소드를 호출했는지와 같이 정규화한다.

이 메소드의 결과는, 이 URI 가 절대의 경우, 또는 지정된 URI 가 절대의 경우에만, 절대로 됩니다.

파라미터:
uri - 이 URI 에 대해서 해결되는 URI
반환값:
결과적으로 얻을 수 있는 URI
예외:
NullPointerException - urinull 의 경우

resolve

public URI  resolve(String  str)
지정된 캐릭터 라인을 해석해, 그 후 그 캐릭터 라인을 이 URI 에 대해서 해결해, 새로운 URI 를 구축합니다.

이 편리한 메소드는, 이 메소드의 호출이 식 resolve (URI. create (str)) 의 평가와 같은가와 같이 동작합니다.

파라미터:
str - URI 에 해석되는 캐릭터 라인
반환값:
결과적으로 얻을 수 있는 URI
예외:
NullPointerException - strnull 의 경우
IllegalArgumentException - 지정된 캐릭터 라인이 RFC 2396 에 위반하는 경우

relativize

public URI  relativize(URI  uri)
지정된 URI 를 이 URI 에 대해서 상대화합니다.

지정된 URI 의 이 URI 에 대한 상대화는, 다음과 같이 해 구할 수 있습니다.

  1. 이 URI 또는 지정된 URI 가 불투명한 경우, 2 개의 URI 의 schema와 기관 컴퍼넌트가 같지 않은 경우, 또는 이 URI 의 패스가 지정된 URI 의 패스의 접두사가 아닌 경우는, 지정된 URI 가 반환된다.

  2. 그렇지 않은 경우, 지정된 URI 로부터 놓친 쿼리 및 fragment 컴퍼넌트와 지정된 URI 의 패스의 선두로부터 이 URI 의 패스를 삭제해 요구한 패스 컴포넌트를 사용해, 새로운 상대 계층 URI 가 구축된다.

파라미터:
uri - 이 URI 에 대해서 상대화되는 URI
반환값:
결과적으로 얻을 수 있는 URI
예외:
NullPointerException - urinull 의 경우

toURL

public URL  toURL()
          throws MalformedURLException 
이 URI 로부터 URL 를 구축합니다.

이 편리한 메소드는, 최초로 이 URI 가 절대인 것을 확인하고 나서, 이 메소드의 호출이 식 new URL(this.toString()) 의 평가와 같은가와 같이 동작합니다.

반환값:
이 URI 로부터 구축된 URL
예외:
IllegalArgumentException - 이 URL 가 절대가 아닌 경우
MalformedURLException - URL 의 프로토콜 핸들러가 발견되지 않았던 경우, 또는 URL 의 구축중에 그 외의 어떠한 에러가 발생했을 경우

getScheme

public String  getScheme()
이 URI 의 schema 컴퍼넌트를 돌려줍니다.

URI 의 schema 컴퍼넌트가 정의되고 있는 경우, 그 컴퍼넌트에 포함되는 것은, 「영숫자」카테고리 또는 캐릭터 라인「-. +」에 포함되는 문자만입니다. schema는 항상, 「영문자」문자로 시작됩니다.

URI 의 schema 컴퍼넌트에 이스케이프 된 8중창을 포함할 수 없습니다. 따라서, 이 메소드는 디코드를 실행하지 않습니다.

반환값:
이 URI 의 schema 컴퍼넌트. schema가 미정도리의 경우는 null

isAbsolute

public boolean isAbsolute()
이 URI 가 절대인가 어떤가를 통지합니다.

URI 가 절대인 것은, 그 URI 에 schema 컴퍼넌트가 있는 경우만입니다.

반환값:
이 URI 가 절대인 경우만 true

isOpaque

public boolean isOpaque()
이 URI 가 불투명한가 어떤가를 통지합니다.

URI 가 불투명해요는, 그 URI 가 절대이며, 그 schema 고유 부분이 slash 문자 ( 「/」)로 시작되지 않은 경우 뿐입니다. 불투명 URI 는, schema와 schema 고유 부분을 가지는 것 외에 경우에 따라서는 fragment도 가집니다. 그 외의 컴퍼넌트는 모두 미정도리가 됩니다.

반환값:
이 URI 가 불투명의 경우만 true

getRawSchemeSpecificPart

public String  getRawSchemeSpecificPart()
이 URI 의 그대로의 schema 고유 부분을 돌려줍니다. schema 고유 부분은, 미정도리가 될 것은 없습니다만, 비우는 것은 있습니다.

URI 의 schema 고유 부분에는, 유효한 URI 문자만이 포함됩니다.

반환값:
이 URI 의 그대로의 schema 고유 부분 (결코 null 는 아니다)

getSchemeSpecificPart

public String  getSchemeSpecificPart()
이 URI 의 복호화 된 schema 고유 부분을 돌려줍니다.

이 메소드로부터 반환되는 캐릭터 라인은,getRawSchemeSpecificPart 메소드로부터 반환되는 캐릭터 라인과 거의 같습니다. 다른 것은, 이스케이프 된 8중창의 순서가 모두디코드되고 있는 점만입니다.

반환값:
이 URI 의 디코드된 schema 고유 부분 (결코 null 는 아니다)

getRawAuthority

public String  getRawAuthority()
이 URI 의 그대로의 기관 컴퍼넌트를 돌려줍니다.

URI 의 기관 컴퍼넌트가 정의되고 있는 경우, 그 컴퍼넌트에 포함되는 것은, 단가 기호 (「@」)와 「미예약」, 「구두점」, 「이스케이프」, 「그 외」의 몇개의 카테고리에 포함되는 문자만입니다. 기관이 서버 베이스인 경우, 그 기관은 게다가 유효한 사용자 정보, 호스트, 포트의 각 컴퍼넌트를 가지도록(듯이) 제약됩니다.

반환값:
이 URI 의 그대로의 기관 컴퍼넌트. 기관이 미정도리의 경우는 null

getAuthority

public String  getAuthority()
이 URI 의 복호화 된 기관 컴퍼넌트를 돌려줍니다.

이 메소드로부터 반환되는 캐릭터 라인은,getRawAuthority 메소드로부터 반환되는 캐릭터 라인과 거의 같습니다. 다른 것은, 이스케이프 된 8중창의 순서가 모두디코드되고 있는 점만입니다.

반환값:
이 URI 의 디코드된 기관 컴퍼넌트. 기관이 미정도리의 경우는 null

getRawUserInfo

public String  getRawUserInfo()
이 URI 의 그대로의 사용자 정보 컴퍼넌트를 돌려줍니다.

URI 의 사용자 정보 컴퍼넌트에는 (정의되고 있는 경우), 「미예약」, 「구두점」, 「이스케이프」, 및 「그 외」의 카테고리의 문자만이 포함됩니다.

반환값:
이 URI 의 그대로의 사용자 정보 컴퍼넌트. 사용자 정보가 미정도리의 경우는 null

getUserInfo

public String  getUserInfo()
이 URI 의 복호화 된 사용자 정보 컴퍼넌트를 돌려줍니다.

이 메소드로부터 반환되는 캐릭터 라인은,getRawUserInfo 메소드로부터 반환되는 캐릭터 라인과 거의 같습니다. 다른 것은, 이스케이프 된 8중창의 순서가 모두디코드되고 있는 점만입니다.

반환값:
이 URI 의 디코드된 사용자 정보 컴퍼넌트. 사용자 정보가 미정도리의 경우는 null

getHost

public String  getHost()
이 URI 의 호스트 컴퍼넌트를 돌려줍니다.

URI 의 호스트 컴퍼넌트 (정의되고 있는 경우)의 형식은, 다음의 머지않아인가입니다.

URI 의 호스트 컴퍼넌트에 이스케이프 된 8중창을 포함할 수 없습니다. 따라서, 이 메소드는 디코드를 실행하지 않습니다.

반환값:
이 URI 의 호스트 컴퍼넌트. 호스트가 미정도리의 경우는 null

getPort

public int getPort()
이 URI 의 포트 번호를 돌려줍니다.

URI 의 포트 컴퍼넌트는 (정의되고 있는 경우), 부가 아닌 정수입니다.

반환값:
이 URI 의 포트 컴퍼넌트. 포트가 미정도리의 경우는 -1

getRawPath

public String  getRawPath()
이 URI 의 그대로의 패스 컴포넌트를 돌려줍니다.

URI 의 패스 컴포넌트에는 (정의되고 있는 경우), slash (/), 단가 기호 (@)와 「미예약」, 「구두점」, 「이스케이프」, 및 「그 외」의 카테고리의 문자만이 포함됩니다.

반환값:
이 URI 의 패스 컴포넌트. 패스가 미정도리의 경우는 null

getPath

public String  getPath()
이 URI 의 복호화 된 패스 컴포넌트를 돌려줍니다.

이 메소드로부터 반환되는 캐릭터 라인은,getRawPath 메소드로부터 반환되는 캐릭터 라인과 거의 같습니다. 다른 것은, 이스케이프 된 8중창의 순서가 모두디코드되고 있는 점만입니다.

반환값:
이 URI 의 디코드된 패스 컴포넌트. 패스가 미정도리의 경우는 null

getRawQuery

public String  getRawQuery()
이 URI 의 그대로의 쿼리컴퍼넌트를 돌려줍니다.

URI 의 쿼리컴퍼넌트에는 (정의되고 있는 경우), 유효한 URI 문자만이 포함됩니다.

반환값:
이 URI 의 그대로의 쿼리컴퍼넌트. 쿼리가 미정도리의 경우는 null

getQuery

public String  getQuery()
이 URI 의 복호화 된 쿼리컴퍼넌트를 돌려줍니다.

이 메소드로부터 반환되는 캐릭터 라인은,getRawQuery 메소드로부터 반환되는 캐릭터 라인과 거의 같습니다. 다른 것은, 이스케이프 된 8중창의 순서가 모두디코드되고 있는 점만입니다.

반환값:
이 URI 의 디코드된 쿼리컴퍼넌트. 쿼리가 미정도리의 경우는 null

getRawFragment

public String  getRawFragment()
이 URI 의 그대로의 fragment 컴퍼넌트를 돌려줍니다.

URI 의 fragment 컴퍼넌트에는 (정의되고 있는 경우), 유효한 URI 문자만이 포함됩니다.

반환값:
이 URI 의 그대로의 fragment 컴퍼넌트. fragment가 미정도리의 경우는 null

getFragment

public String  getFragment()
이 URI 의 복호화 된 fragment 컴퍼넌트를 돌려줍니다.

이 메소드로부터 반환되는 캐릭터 라인은,getRawFragment 메소드로부터 반환되는 캐릭터 라인과 거의 같습니다. 다른 것은, 이스케이프 된 8중창의 순서가 모두디코드되고 있는 점만입니다.

반환값:
이 URI 의 디코드된 fragment 컴퍼넌트. fragment가 미정도리의 경우는 null

equals

public boolean equals(Object  ob)
이 URI 가 다른 객체와 동일한지 어떤지를 판정합니다.

지정된 객체가 URI 가 아닌 경우, 이 메소드는 즉시 false 를 돌려줍니다.

2 개의 URI 가 동일하다고 보이려면 , 어느쪽이나 불투명 URI 인지, 어느쪽이나 계층 URI 일 필요가 있습니다. schema는, 어느쪽이나 지정되지 않은지, 대문자와 소문자를 구별하지 않는 경우에 동일하지 않으면 안됩니다. fragment는, 어느쪽이나 지정되지 않은지, 동일하지 않으면 안됩니다.

동일하다고 보여지는 2 개의 불투명 URI 의 경우, 그러한 schema 고유 부분은 동일할 필요가 있습니다.

2 개의 계층 URI 가 동일하다고 보이려면 , 패스가 동일하고, 쿼리가 어느쪽이나 미정도리일까 동일하지 않으면 안됩니다. 기관은, 어느쪽이나 지정되지 않은지, 어느쪽이나 레지스트리 베이스인지, 어느쪽이나 서버 베이스가 아니면 안됩니다. 기관이 정의되고 있어 레지스트리 베이스인 경우, 그러한 기관은 동일하지 않으면 안됩니다. 기관이 정의되고 있어 서버 베이스인 경우, 대문자와 소문자를 구별하지 않는 경우에 호스트가 동일하고, 포트 번호가 동일하고, 사용자 정보 컴퍼넌트가 동일하지 않으면 안됩니다.

2 개의 URI 의 사용자 정보, 패스, 쿼리, fragment, 기관, 또는 schema 고유 부분이 동일한지 어떤지 판정하는 경우, 이러한 컴퍼넌트는 encode 된 형식이 아니고 그대로의 형식에서 비교되어 이스케이프 된 8중창의 16 진수는 대문자 소문자에 관계없이 비교됩니다.

이 메소드는 Object.equals 메소드의 범용 규약을 채웁니다.

오버라이드(override):
클래스 Object 내의 equals
파라미터:
ob - 이 객체와 비교하는 객체
반환값:
지정된 객체가 이 URI 와 같은 URI 인 경우만 true
관련 항목:
Object.hashCode() , Hashtable

hashCode

public int hashCode()
이 URI 의 해시 코드값를 돌려줍니다. 이 해시 코드는, URI 의 모든 컴퍼넌트에 근거해,Object.hashCode 메소드의 범용 규약을 채웁니다.

오버라이드(override):
클래스 Object 내의 hashCode
반환값:
이 URI 의 해시 코드값
관련 항목:
Object.equals(java.lang.Object) , Hashtable

compareTo

public int compareTo(URI  that)
이 URI 를 다른 객체와 비교합니다. 그 객체는 URI 가 아니면 안됩니다.

2 개의 URI 의 대응하는 컴퍼넌트를 비교할 때에, 한편의 컴퍼넌트가 지정되지 않은데 한편이 정의가 끝난 상태였을 경우, 전자 쪽이 후자보다 작다고 보입니다. 특히 명기되어 있지 않은 한, 캐릭터 라인 컴퍼넌트는,String.compareTo 메소드로 정의되고 있도록(듯이), 본래의 대문자 소문자를 구별한 순서에 따라 순서 붙일 수 있습니다. encode의 대상이 되는 캐릭터 라인 컴퍼넌트의 비교는, encode 된 형식은 아니고 그대로의 형식에서 비교됩니다.

URI 의 순서는 다음과 같이 정의됩니다.

이 메소드는 Comparable.compareTo 메소드의 범용 규약을 채웁니다.

정의:
인터페이스 Comparable <URI > 내의 compareTo
파라미터:
that - 이 URI 와 비교하는 객체
반환값:
이 URI 가 지정된 URI 보다 작은 경우는 부의 정수, 동일한 경우는 0, 큰 경우는 정의 정수
예외:
ClassCastException - 지정된 객체가 URI 가 아닌 경우

toString

public String  toString()
이 URI 의 컨텐츠를 캐릭터 라인으로서 돌려줍니다.

이 URI 가 이 클래스의 몇개의 생성자 을 호출하는 것으로 작성된 것인 경우, 원의 입력 캐릭터 라인과 등가인 캐릭터 라인, 또는 최초로 지정된 컴퍼넌트로부터 적당 계산된 캐릭터 라인과 등가인 캐릭터 라인이 돌려주어집니다. 그 이외의 경우, 이 URI 는 정규화, 해결, 또는 상대화에 의해 작성된 것이므로,「RFC 2396」의 섹션 5. 2, 스텝  7 의 규칙에 따라, 이 URI 의 컴퍼넌트로부터 캐릭터 라인이 구축됩니다.

오버라이드(override):
클래스 Object 내의 toString
반환값:
이 URI 의 캐릭터 라인 형식

toASCIIString

public String  toASCIIString()
이 URI 의 컨텐츠를 US-ASCII 캐릭터 라인으로서 돌려줍니다.

이 URI 에 「그 외」카테고리의 문자가 1 개도 포함되지 않은 경우, 이 메소드를 호출하면(자),toString 메소드 호출시와 같은 값이 돌려주어집니다. 그 이외의 경우, 그 메소드의 호출 후에 결과를encode 했는지와 같이, 이 메소드는 동작합니다.

반환값:
이 URI 의 캐릭터 라인 형식. US-ASCII 캐릭터 세트의 문자만이 포함되도록, 필요에 따라서 encode 된다

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.