|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectjava.net.URI
public final class URI
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 인스턴스를 정규화, 해결, 상대화하기 위한 메소드를 제공합니다. 이 클래스의 인스턴스는 불변입니다.
[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 개의 컴퍼넌트가 있습니다.
지정된 인스턴스에서는, 어느 특정의 컴퍼넌트도 「미정도리」인가 「정의가 끝난 상태」이며, 개별의 형태의 값을 가집니다. 미정도리의 캐릭터 라인 컴퍼넌트는 null 로 나타내져 미정도리의 정수 컴퍼넌트는 -1 으로 나타내집니다. 캐릭터 라인 컴퍼넌트는, 값으로 해서 빈 상태(empty)의 캐릭터 라인을 가지도록(듯이) 정의할 수 있습니다. 이것은, 그 컴퍼넌트가 지정되지 않은 것으로 동등하지는 않습니다.
Component 형 schema String schema 고유 부분 String 기관 String 사용자 정보 String host String port int path String 쿼리 String fragment String
특정의 컴퍼넌트가 인스턴스로 정의빌려주어지지 않은가는, 표현되는 URI 의 형태에 의해 다릅니다. 절대 URI 에는 schema 컴퍼넌트가 있습니다. 불투명 URI 에는 schema, schema 고유 부분, 및 아마 fragment가 있습니다만, 그 외의 컴퍼넌트는 없습니다. 계층 URI 에는, 항상 패스 (다만 빈 상태(empty)의 경우 있어) 및 schema 고유 부분 (적어도 패스를 포함한다)이 있어, 한층 더 그 외의 컴퍼넌트중 한쪽이 있는 경우가 있습니다. 기관 컴퍼넌트가 존재하고 있어 서버 베이스인 경우, 호스트 컴퍼넌트는 정의됩니다. 사용자 정보와 포트 컴퍼넌트는 정의되는 경우도 있습니다.
「정규화」는, 계층 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) 및이 조작은, 가능하면 어디서에서도, 문서의 베이스 URI 에 대해서 상대적이 아니면 안되는 URI 를 포함한 문서를 구축하는 경우에 편리합니다. 예를 들어, 다음의 URI
u. resolve(u. relativize(v)). equals(v)
http://java.sun.com/j2se/1. 3/docs/guide/index.html(을)를 다음의 베이스 URI 에 대해서 상대화하면(자),
http://java.sun.com/j2se/1. 3상대 URI docs/guide/index.html 가 생성됩니다.
영문자 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 문자세트는 「미예약」, 「예약」, 「이스케이프」, 및 「그 외」의 문자로 구성됩니다.
URI 에 「그 외」의 문자를 1 개도 포함하지 않게 하는 것으로 URI 를 RFC 2396 에 엄밀하게 준거시킬 필요가 있는 경우에, 비 US-ASCII 문자를 「encode」한다.
그대로는 부정하게 되는 컴퍼넌트내의 문자를 「인용부호로 둘러싼다」. 사용자 정보, 패스, 쿼리, 및 fragment의 각 컴퍼넌트는, 유효 또는 부정이라고 보여지는 문자의 조건이 다소 다르다.
문자는 UTF-8 캐릭터 세트내의 그 문자를 나타내는 이스케이프 된 8중창의 순서로 옮겨놓아 「encode」된다. 예를 들어, 유로 통화 기호 ('\u20AC')는 %E2%82%AC 로서 encode 된다 (특정의 캐릭터 세트를 지정하지 않는 RFC 2396 를 변경한 것)
모든 부정한 문자는, 단지 encode 해 「인용부호로 둘러싸인다」. 예를 들어 공백 문자는,%20 로 옮겨놓아 인용부호로 둘러싸인다. UTF-8 에는 US-ASCII 가 포함되므로, US-ASCII 문자의 경우, 이 변환으로 RFC 2396 로 요구되는 효과를 정확하게 얻을 수 있다
이스케이프 된 8중창의 순서를 「디코드」한다. 구체적으로는, 그 순서가 UTF-8 캐릭터 세트내에서 나타내고 있는 문자 순서로 치환한다. UTF-8 는 US-ASCII 를 포함한다. 따라서, 디코드 처리는, 인용부호로 둘러싸인 모든 US-ASCII 문자의 인용부호를 해제하는 효과와 encode 된 모든 비 US-ASCII 문자를 디코드하는 효과가 있다. 이스케이프 된 8중창의 디코드시에디코드 에러가 발생했을 경우, 그 에러의 발생한 octet 는, Unicode 치환 문자인「\uFFFD」로 옮겨진다.
은, 그 인수내의 모든 부정 문자가 인용부호로 둘러싸는 것을 요구하지만, 존재하는 이스케이프 된 8중창과 「그 외」의 문자는 모두 그대로 유지한다. 단일 인수 생성자
은, 부정 문자를 포함한 컴퍼넌트로부터의 요구에 따라 부정 문자를 인용부호로 둘러싼다. 퍼센트 문자 (「%」)는 항상, 이러한 생성자 에 의해 둘러싸인다. 「그 외」의 문자는 모두 그대로 유지된다. 복수 인수 생성자
getRawUserInfo
,getRawPath
,getRawQuery
,getRawFragment
,getRawAuthority
, 및 getRawSchemeSpecificPart
메소드는, 대응하는 컴퍼넌트의 값을 그대로의 형식에서 돌려주어, 이스케이프 된 8중창을 해석하지 않는다. 이러한 메소드로부터 반환되는 캐릭터 라인에는, 이스케이프 된 8중창과 「그 외」의 문자의 양쪽 모두가 포함되어 있는 일이 있어, 부정한 문자는 포함되지 않는다.
getUserInfo
,getPath
,getQuery
,getFragment
,getAuthority
, 및 getSchemeSpecificPart
메소드는, 대응하는 컴퍼넌트내의 모든 이스케이프 된 8중창을 디코드한다. 이러한 메소드로부터 반환되는 캐릭터 라인에는, 「그 외」의 문자와 부정 문자의 어느쪽이나 포함될 가능성이 있지만, 이스케이프 된 8중창이 포함될 것은 없다.
toString
메소드는, 모든 필요한 인용부호를 가지는 URI 캐릭터 라인을 돌려주지만, 「그 외」의 문자가 포함되는 경우가 있다.
toASCIIString
메소드는, 완전하게 인용부호로 둘러싸여 encode 된 URI 캐릭터 라인을 돌려준다. 이 캐릭터 라인에는 「그 외」의 문자는 포함되지 않는다.
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 가 계층의 경우
u. getUserInfo(), u. getAuthority(),
u. getPath(), u. getQuery(),
u. getFragment())
. equals(u)
new URI(u. getScheme(),u 가 계층에서, 기관을 가지지 않는가 서버 베이스의 기관을 가지는 경우
u. getUserInfo(), u. getHost(), u. getPort(),
u. getPath(), u. getQuery(),
u. getFragment())
. equals(u)
URI 와 URL 와의 개념상의 구별은, 이 클래스와 URL
클래스의 사이의 상위에 반영되고 있습니다.
이 클래스의 인스턴스는, RFC 2396 로 정의되고 있는 구문으로서의 URI 참조를 나타냅니다. URI 는 절대, 상대의 어느 쪽인가에 됩니다. URI 캐릭터 라인은, schema가 지정되고 있어도 거기에 붙어 고려하지 않고, 일반적인 구문에 따라 해석됩니다. 호스트가 존재하고 있어도 그 검색은 실행되지 않고, schema에 의존하는 스트림 핸들러의 구축도 행해지지 않습니다. 등가성, 해시 처리, 및 비교는, 인스턴스의 문자 내용에 근거해 엄밀하게 정의됩니다. 바꾸어 말하면, URI 인스턴스는 기본적으로, 비교, 정규화, 해결, 및 상대화라고 하는, schema에 의존하지 않는 구문상의 조작을 지원하는, 구조화 된 캐릭터 라인입니다.
이것에 대해,URL
클래스의 인스턴스는, URL 의 구문상의 컴퍼넌트를 나타낼 뿐만 아니라, 그 기술 대상이 되는 자원에의 액세스에 필요한 정보도 일부 갖추고 있습니다. URL 는 절대가 아니면 안됩니다. 즉, 항상 schema를 지정하지 않으면 안됩니다. URL 캐릭터 라인은, 그 schema에 따라 해석됩니다. 어느 URL 에 대해서도 스트림 핸들러가 반드시 확립됩니다. 실제, 사용 가능한 핸들러가 존재하지 않는 schema의 URL 인스턴스를 작성하는 것은 불가능합니다. 등가성과 해시 처리는, schema와 호스트의 인터넷 주소 (존재하는 경우)의 양쪽 모두에 의존합니다. 비교는 정의되지 않습니다. 바꾸어 말하면, URL 는, 해결이라고 하는 구문상의 조작과 호스트의 검색이나 지정된 자원에의 접속의 개방적인 어느 네트워크 입출력 조작을 지원하는, 구조화 된 캐릭터 라인입니다.
생성자 의 개요 | |
---|---|
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 |
생성자 의 상세 |
---|
public URI(String str) throws URISyntaxException
이 생성자 은, 지정된 캐릭터 라인을 해석할 때에,「RFC 2396」의 부록 A 의 문법으로 엄밀하게 따릅니다. 다만, 다음의 점에 관해서는, 문법에 따르지 않습니다.
빈 상태(empty)의 기관 컴퍼넌트는, 그 후에 빈 상태(empty)이 아닌 패스, 쿼리컴퍼넌트, fragment 컴퍼넌트가 계속되고 있는 경우에 한해, 허가된다. 이것에 의해,「file:///foo/bar」등의 URI 를 해석할 수 있게 된다. 이것은, 문법에서는 허가되어 있지 않지만, RFC 2396 의 의도하는 곳(중)이라고 생각된다. 기관 컴퍼넌트가 빈 상태(empty)의 경우, 사용자 정보, 호스트, 포트의 각 컴퍼넌트는 미정도리가 된다.
빈 상태(empty)의 상대 패스는 허가된다. 이것은, 문법에서는 허가되어 있지 않지만, RFC 2396 의 의도하는 곳(중)이라고 생각된다. 이 일탈의 주된 결과적으로,「#foo」와 같은 단독의 fragment가, 빈 상태(empty)의 패스와 지정된 fragment를 가지는 상대 URI 로서 해석되게 된다. 이 URI 는 베이스 URI 에 근거해해결할 수 있으므로 편리하다.
호스트 컴퍼넌트내의 IPv4 주소는,「RFC 2732」 에 따라 엄밀하게 해석된다. 닷으로 4 개에 단락지어진 주소의 각 요소에는, 3 자리수를 넘는 10 진을 포함할 수 없다. 게다가 각 요소의 값은 255 를 넘어서는 안 된다고 하는 제약이 있습니다.
호스트 컴퍼넌트내의 호스트명이 단일의 도메인 라벨만으로 구성되는 경우, 그 호스트명은 「영숫자」문자로 시작되어도 상관없다. 이것은, 문법에서는 허가되어 있지 않지만,「RFC 2396」의 섹션 3. 2.2 의 의도하는 곳(중)이라고 생각된다. 이 변경의 결과로서,s://123 와 같은 계층 URI 의 기관 컴퍼넌트가, 서버 베이스 기관으로서 해석되게 된다.
호스트 컴퍼넌트로 IPv6 주소의 사용이 허가된다. 「RFC 2732」에 따라,IPv6 주소는 꺽쇄묶음 (「[」과「]」)으로 둘러싸지 않으면 안 된다. IPv6 주소 자체는,RFC 2373 에 따라 해석되지 않으면 안 된다. IPv6 주소는 게다가 16 바이트를 넘지 않는 주소 정보를 기술하도록(듯이) 제약된다. 이 제약은, RFC 2373 로 암묵적으로 나타나고 있지만, 문법에서는 표현할 수 없습니다.
「그 외」의 카테고리에 포함되는 문자는, RFC 2396 가 「이스케이프」 octet 의 사용을 허가하고 있는 장소이면 어디에서라도 사용할 수 있다. 즉, 사용자 정보, 패스, 쿼리, fragment의 각 컴퍼넌트내에서 사용할 수 있다. 게다가 기관이 레지스트리 베이스이면, 기관 컴퍼넌트내에서도 사용할 수 있다. 이것에 의해, US-ASCII 캐릭터 세트에 포함되는 문자 이외의 Unicode 문자를, URI 에 포함할 수가 있게 된다.
str
- URI 에 해석되는 캐릭터 라인
NullPointerException
- str 가 null 의 경우
URISyntaxException
- 상기의 변경에 의해 확장된 RFC 2396 에, 지정된 캐릭터 라인이 위반하는 경우public URI(String scheme, String userInfo, String host, int port, String path, String query, String fragment) throws URISyntaxException
schema가 지정되어 패스도 지정되었을 경우, 그 패스는 빈 상태(empty)인지, slash 문자 (「/」)로 시작되지 않으면 안됩니다. 그렇지 않은 경우, 새로운 URI 의 컴퍼넌트는, 대응하는 파라미터에 null 를 건네주는지,port 파라미터의 경우는 -1 을 건네주어, 미정도리대로 되는 일이 있습니다.
이 생성자 은 우선, 다음과 같이 지정된 컴퍼넌트로부터 URI 캐릭터 라인을 구축합니다만, 그 때,「RFC 2396」의 섹션 5. 2 의 스텝 7 에 기재되어 있는 규칙에 따릅니다.
최초, 결과 캐릭터 라인은 비우고 있다.
schema가 지정되고 있는 경우, 그 schema가 결과의 말미에 추가되어 그 후에 구두점 문자 (「:」)가 추가된다.
사용자 정보, 호스트, 또는 포트가 지정되고 있는 경우, 캐릭터 라인「//」이 말미에 추가된다.
사용자 정보가 지정되고 있는 경우, 그 사용자 정보가 말미에 추가되어 그 후에 단가 기호 (「@」)가 추가된다. 「미예약」, 「구두점」, 「이스케이프」, 「그 외」목의 카테고리에도 포함되지 않는 문자는 모두,인용부호로 둘러싸인다.
호스트가 지정되고 있는 경우, 그 호스트가 말미에 추가된다. 호스트가 리터럴 IPv6 주소이지만, 꺽쇄묶음 (「[」과「]」)으로 둘러싸이지 않은 경우는, 꺽쇄묶음이 추가된다.
포트 번호가 지정되고 있는 경우, 구두점 문자 (「:」)가 말미에 추가되어 그 후에 그 10 진수의 포트 번호가 추가된다.
패스가 지정되고 있는 경우, 그 패스가 말미에 추가된다. 「미예약」, 「구두점」, 「이스케이프」, 「그 외」목의 카테고리에도 포함되지 않고, slash 문자 (「/」), 단가 기호 (「@」)의 어느 쪽과도 동일하지 않은 문자는 모두, 인용부호로 둘러싸인다.
쿼리가 지정되고 있는 경우, 물음표 문자 (「?」)이 말미에 추가되어 그 후에 그 쿼리가 추가된다. 적정한 URI 문자가 아닌 문자는 모두, 인용부호로 둘러싸인다.
마지막으로, fragment가 지정되고 있는 경우, 해시 문자 (「#」)가 말미에 추가되어 그 후에 그 fragment가 추가된다. 적정한 URI 문자가 아닌 문자는 모두, 인용부호로 둘러싸인다.
결과적으로 얻을 수 있는 URI 캐릭터 라인이 해석됩니다만, 이 해석은,URI(String)
생성자 을 호출한 뒤, 그 결과에 대해서 parseServerAuthority()
메소드를 호출했는지와 같이 행해집니다. 이것에 의해,URISyntaxException
가 throw 될 가능성이 있습니다.
scheme
- schema명userInfo
- 사용자명과 인증 정보host
- 호스트명port
- 포트 번호path
- 패스query
- 쿼리fragment
- fragment
URISyntaxException
- schema와 패스의 양쪽 모두가 지정되고 있지만 패스가 상대의 경우, 지정된 컴퍼넌트로부터 구축된 URI 캐릭터 라인이 RFC 2396 에 위반하는 경우, 또는 캐릭터 라인의 기관 컴퍼넌트가 존재하지만 서버 베이스의 기관으로서 해석할 수 없는 경우public URI(String scheme, String authority, String path, String query, String fragment) throws URISyntaxException
schema가 지정되어 패스도 지정되었을 경우, 그 패스는 빈 상태(empty)인지, slash 문자 (「/」)로 시작되지 않으면 안됩니다. 그렇지 않은 경우, 새로운 URI 의 컴퍼넌트는, 대응하는 파라미터에 null 를 건네주어, 미정도리대로 되는 일이 있습니다.
이 생성자 은 우선, 다음과 같이 지정된 컴퍼넌트로부터 URI 캐릭터 라인을 구축합니다만, 그 때,「RFC 2396」의 섹션 5. 2 의 스텝 7 에 기재되어 있는 규칙에 따릅니다.
최초, 결과 캐릭터 라인은 비우고 있다.
schema가 지정되고 있는 경우, 그 schema가 결과의 말미에 추가되어 그 후에 구두점 문자 (「:」)가 추가된다.
기관이 지정되고 있는 경우, 캐릭터 라인「//」이 말미에 추가되어 그 후에 그 기관이 추가된다. 기관에 리터럴 IPv6 주소가 포함되는 경우, 그 주소를 꺽쇄묶음 (「[」과「]」)으로 둘러쌀 필요가 있다. 「미예약」, 「구두점」, 「이스케이프」, 「그 외」목의 카테고리에도 포함되지 않고, 단가 기호 (「@」)와 동일하지 않은 문자는 모두,인용부호로 둘러싸인다.
패스가 지정되고 있는 경우, 그 패스가 말미에 추가된다. 「미예약」, 「구두점」, 「이스케이프」, 「그 외」목의 카테고리에도 포함되지 않고, slash 문자 (「/」), 단가 기호 (「@」)의 어느 쪽과도 동일하지 않은 문자는 모두, 인용부호로 둘러싸인다.
쿼리가 지정되고 있는 경우, 물음표 문자 (「?」)이 말미에 추가되어 그 후에 그 쿼리가 추가된다. 적정한 URI 문자가 아닌 문자는 모두, 인용부호로 둘러싸인다.
마지막으로, fragment가 지정되고 있는 경우, 해시 문자 (「#」)가 말미에 추가되어 그 후에 그 fragment가 추가된다. 적정한 URI 문자가 아닌 문자는 모두, 인용부호로 둘러싸인다.
결과적으로 얻을 수 있는 URI 캐릭터 라인이 해석됩니다만, 이 해석은,URI(String)
생성자 을 호출한 뒤, 그 결과에 대해서 parseServerAuthority()
메소드를 호출했는지와 같이 행해집니다. 이것에 의해,URISyntaxException
가 throw 될 가능성이 있습니다.
scheme
- schema명authority
- 기관path
- 패스query
- 쿼리fragment
- fragment
URISyntaxException
- schema와 패스의 양쪽 모두가 지정되고 있지만 패스가 상대의 경우, 지정된 컴퍼넌트로부터 구축된 URI 캐릭터 라인이 RFC 2396 에 위반하는 경우, 또는 캐릭터 라인의 기관 컴퍼넌트가 존재하지만 서버 베이스의 기관으로서 해석할 수 없는 경우public URI(String scheme, String host, String path, String fragment) throws URISyntaxException
컴퍼넌트는,null 를 건네주어 미정도리대로 되는 일이 있습니다.
이 간이 생성자 은, 다음과 같이 7 개의 인수의 생성자 을 호출하는것 같이 동작합니다.
new URI
(scheme, null, host, -1, path, null, fragment);
scheme
- schema명host
- 호스트명path
- 패스fragment
- fragment
URISyntaxException
- 지정된 컴퍼넌트로부터 구축된 URI 캐릭터 라인이 RFC 2396 에 위반하는 경우public URI(String scheme, String ssp, String fragment) throws URISyntaxException
컴퍼넌트는,null 를 건네주어 미정도리대로 되는 일이 있습니다.
이 생성자 은 우선, 다음과 같이 지정된 컴퍼넌트를 사용해 캐릭터 라인 형식의 URI 를 구축합니다.
최초, 결과 캐릭터 라인은 비우고 있다.
schema가 지정되고 있는 경우, 그 schema가 결과의 말미에 추가되어 그 후에 구두점 문자 (「:」)가 추가된다.
schema 고유 부분이 지정되고 있는 경우, 그 schema 고유 부분이 말미에 추가된다. 적정한 URI 문자가 아닌 문자는 모두,인용부호로 둘러싸인다.
마지막으로, fragment가 지정되고 있는 경우, 해시 문자 (「#」)가 캐릭터 라인의 말미에 추가되어 그 후에 그 fragment가 추가된다. 적정한 URI 문자가 아닌 문자는 모두, 인용부호로 둘러싸인다.
새로운 URI 인스턴스를 작성하기 위해서 결과적으로 얻을 수 있는 URI 캐릭터 라인이 해석됩니다만, 이 해석은,URI(String)
생성자 을 호출했는지와 같이 행해집니다. 이것에 의해,URISyntaxException
가 throw 될 가능성이 있습니다.
scheme
- schema명ssp
- schema 고유 부분fragment
- fragment
URISyntaxException
- 지정된 컴퍼넌트로부터 구축된 URI 캐릭터 라인이 RFC 2396 에 위반하는 경우메소드의 상세 |
---|
public static URI create(String str)
이 간이 팩토리 메소드는,URI(String)
생성자 을 호출했는지와 같이 동작합니다. 이 생성자 으로부터 throw 된 URISyntaxException
는 모두, 캐치 되어 새로운 IllegalArgumentException
객체내에 랩 된 뒤, throw 됩니다.
이 메소드는, 프로그램내에서 선언된 URI 정수와 같이, 주어진 캐릭터 라인이 적정한 URI 인 것을 미리 알고 있기 위해서(때문에), 캐릭터 라인이 그처럼 해석되지 않는 경우는 프로그래밍 에러로 간주해지는 것 같은 상황으로 사용하기 위해서 제공되고 있습니다. 사용자 입력이나, 에러가 포함될 가능성의 높은 그 외의 어떠한 소스에 근거해 URI 가 구축되는 것 같은 상황에서는,URISyntaxException
를 직접 throw 하는 생성자 을 사용하도록 해 주세요.
str
- URI 에 해석되는 캐릭터 라인
NullPointerException
- str 가 null 의 경우
IllegalArgumentException
- 지정된 캐릭터 라인이 RFC 2396 에 위반하는 경우public URI parseServerAuthority() throws URISyntaxException
이 URI 의 기관 컴퍼넌트가 벌써 서버 베이스로서 인식되고 있는 경우에는, 그것은 벌써 해석되어 사용자 정보, 호스트, 포트의 각 컴퍼넌트 로 분리되고 있습니다. 이 경우, 또는 이 URI 가 기관 컴퍼넌트를 가지지 않는 경우에는, 이 메소드는 이 URI 를 그대로 돌려줍니다.
그렇지 않은 경우, 이 메소드는 기관 컴퍼넌트로부터 사용자 정보, 호스트, 및 포트의 각 컴퍼넌트에의 해석을 한번 더 시도해 기관 컴퍼넌트를 그처럼 해석할 수 없었던 이유를 설명하는 예외를 throw 합니다.
이 메소드가 제공되고 있는 것은,「RFC 2396」 으로 지정되고 있는 총칭 URI 구문이, 부정한 서버 베이스 기관과 적정한 레지스트리 베이스 기관을 항상 구별할 수 있다고는 할 수는 없기 때문입니다. 이 때문에, 그것은, 전자의 케이스의 일부를 후자의 케이스로서 취급하지 않으면 안됩니다. 예를 들어, URI 캐릭터 라인「//foo:bar」내의 기관 컴퍼넌트는, 적정한 서버 베이스 기관이 아닙니다만, 레지스트리 베이스 기관으로서는 적정입니다.
URN, URL 의 어느 쪽인지인 것을 알 수 있고 있는 URI 를 조작하는 경우와 같은, 많은 일반적인 상황에서는, 사용되는 계층 URI 는 항상 서버 베이스가 됩니다. 따라서, 그것들은 그처럼 해석되는지, 에러로서 처리될까의 어느 쪽인지 나오지 않으면 안됩니다. 이러한 경우,
URI u = new URI(str). parseServerAuthority();
(와)과 같은 문장을 사용하면,u 가 참조하는 URI 에 기관 컴퍼넌트가 포함되는 경우에, 그 기관이 항상 적절한 사용자 정보, 호스트, 포트의 각 컴퍼넌트를 포함한 서버 베이스 기관인 것을 보증할 수 있습니다. 또, 이 메소드를 호출하면, 기관을 그처럼 해석할 수 없었던 경우에도, throw 된 예외에 근거해 적절한 진단 메세지를 확실히 발행할 수 있습니다.
URISyntaxException
- 이 URI 의 기관 컴퍼넌트가 지정되고 있지만, RFC 2396 에 따라 서버 베이스 기관으로서 해석할 수 없는 경우public URI normalize()
이 URI 가 불투명한 경우, 또는 그 패스가 벌써 정규화된 형식이 되어 있는 경우는, 이 URI 가 돌려주어집니다. 그렇지 않은 경우는, 이 URI 와 같은 새로운 URI 가 구축됩니다. 다만, 그 패스가「RFC 2396」의 섹션 5. 2, 스텝 6, 서브 스텝 c 로부터 f 에 준거한 방법으로 이 URI 의 패스를 정규화해 구할 수 있는 경우를 제외합니다. 다음과 같이 됩니다.
모든「.」세그먼트(segment)가 삭제된다.
「..」세그먼트(segment)의 직전에「..」이외의 세그먼트(segment)가 존재하는 경우, 그 양쪽 모두의 세그먼트(segment)가 삭제된다. 이 순서가 해당하지 않게 될 때까지 반복해진다.
패스가 상대이며, 그 최초의 세그먼트(segment)에 구두점 문자 (「:」)가 포함되어 있는 경우, 그 전에「.」세그먼트(segment)가 추가된다. 이것에 의해,「a:b/c/d」와 같은 패스를 포함한 상대 URI 가, schema「a」와 schema 고유 부분「b/c/d」를 가지는 불투명 URI 로서 나중에 재차 해석되어 버리는 것을 막을 수가 있다. (RFC 2396 로부터의 변경)
정규화된 패스는, 삭제를 가능하게 하는「..」(이)가 아닌 선행의 세그먼트(segment)가 불충분했던 경우, 1 개(살) 이상의「..」세그먼트(segment)로 시작됩니다. 정규화된 패스가「.」세그먼트(segment)로 시작되는 것은, 상기의 순서 3 으로 그러한 세그먼트(segment)가 삽입되었을 경우입니다. 그 이외의 경우는, 정규화된 패스에「.」세그먼트(segment)나「..」세그먼트(segment)가 포함될 것은 없습니다.
public URI resolve(URI uri)
지정된 URI 가 벌써 절대인 경우, 또는 이 URI 가 불투명한 경우는, 지정된 URI 가 돌려주어집니다.
지정된 URI 의 fragment 컴퍼넌트가 정의가 끝난 상태이며, 패스 컴포넌트가 빈 상태(empty)이며, schema, 기관, 쿼리의 각 컴퍼넌트가 지정되지 않은 경우, 지정된 fragment를 가지지만, 그 이외의 모든 컴퍼넌트는 이 URI 의 값에 동일한 것 같은 URI 가 돌려주어집니다. 이것에 의해,「#foo」와 같은 단독의 fragment 참조를 나타내는 URI 를 베이스 URI 에 근거해 해석할 수 있게 되므로 편리합니다.
그렇지 않은 경우, 이 메소드는,「RFC 2396」의 섹션 5. 2 에 적합하는 방법으로 새로운 계층 URI 를 구축합니다. 다음과 같이 됩니다.
이 URI 의 schema와 지정된 URI 의 쿼리 및 fragment 컴퍼넌트를 사용해, 새로운 URI 가 구축된다.
지정된 URI 에 기관 컴퍼넌트가 있는 경우, 새로운 URI 의 기관과 패스는 지정된 URI 로부터 놓친다.
그렇지 않은 경우, 새로운 URI 의 기관 컴퍼넌트가 이 URI 로부터 카피되어 그 패스는 다음과 같이 해 구할 수 있다.
지정된 URI 의 패스가 절대의 경우, 새로운 URI 의 패스는 지정된 URI 로부터 놓친다.
그 이외의 경우, 지정된 URI 의 패스는 상대이므로, 이 URI 의 패스에 근거해 지정된 URI 의 패스를 해결하는 것으로, 새로운 URI 의 패스가 계산된다. 이것을 실시하려면 , 이 URI 의 패스 (존재하는 경우)의 마지막 세그먼트(segment) 이외의 모든 세그먼트(segment)가 지정된 URI 의 패스에 연결한 뒤, 그 결과를 normalize
메소드를 호출했는지와 같이 정규화한다.
이 메소드의 결과는, 이 URI 가 절대의 경우, 또는 지정된 URI 가 절대의 경우에만, 절대로 됩니다.
uri
- 이 URI 에 대해서 해결되는 URI
NullPointerException
- uri 가 null 의 경우public URI resolve(String str)
이 편리한 메소드는, 이 메소드의 호출이 식 resolve
(URI. create
(str)) 의 평가와 같은가와 같이 동작합니다.
str
- URI 에 해석되는 캐릭터 라인
NullPointerException
- str 가 null 의 경우
IllegalArgumentException
- 지정된 캐릭터 라인이 RFC 2396 에 위반하는 경우public URI relativize(URI uri)
지정된 URI 의 이 URI 에 대한 상대화는, 다음과 같이 해 구할 수 있습니다.
이 URI 또는 지정된 URI 가 불투명한 경우, 2 개의 URI 의 schema와 기관 컴퍼넌트가 같지 않은 경우, 또는 이 URI 의 패스가 지정된 URI 의 패스의 접두사가 아닌 경우는, 지정된 URI 가 반환된다.
그렇지 않은 경우, 지정된 URI 로부터 놓친 쿼리 및 fragment 컴퍼넌트와 지정된 URI 의 패스의 선두로부터 이 URI 의 패스를 삭제해 요구한 패스 컴포넌트를 사용해, 새로운 상대 계층 URI 가 구축된다.
uri
- 이 URI 에 대해서 상대화되는 URI
NullPointerException
- uri 가 null 의 경우public URL toURL() throws MalformedURLException
이 편리한 메소드는, 최초로 이 URI 가 절대인 것을 확인하고 나서, 이 메소드의 호출이 식 new URL(this.toString()) 의 평가와 같은가와 같이 동작합니다.
IllegalArgumentException
- 이 URL 가 절대가 아닌 경우
MalformedURLException
- URL 의 프로토콜 핸들러가 발견되지 않았던 경우, 또는 URL 의 구축중에 그 외의 어떠한 에러가 발생했을 경우public String getScheme()
URI 의 schema 컴퍼넌트가 정의되고 있는 경우, 그 컴퍼넌트에 포함되는 것은, 「영숫자」카테고리 또는 캐릭터 라인「-. +」에 포함되는 문자만입니다. schema는 항상, 「영문자」문자로 시작됩니다.
URI 의 schema 컴퍼넌트에 이스케이프 된 8중창을 포함할 수 없습니다. 따라서, 이 메소드는 디코드를 실행하지 않습니다.
public boolean isAbsolute()
URI 가 절대인 것은, 그 URI 에 schema 컴퍼넌트가 있는 경우만입니다.
public boolean isOpaque()
URI 가 불투명해요는, 그 URI 가 절대이며, 그 schema 고유 부분이 slash 문자 ( 「/」)로 시작되지 않은 경우 뿐입니다. 불투명 URI 는, schema와 schema 고유 부분을 가지는 것 외에 경우에 따라서는 fragment도 가집니다. 그 외의 컴퍼넌트는 모두 미정도리가 됩니다.
public String getRawSchemeSpecificPart()
URI 의 schema 고유 부분에는, 유효한 URI 문자만이 포함됩니다.
public String getSchemeSpecificPart()
이 메소드로부터 반환되는 캐릭터 라인은,getRawSchemeSpecificPart
메소드로부터 반환되는 캐릭터 라인과 거의 같습니다. 다른 것은, 이스케이프 된 8중창의 순서가 모두디코드되고 있는 점만입니다.
public String getRawAuthority()
URI 의 기관 컴퍼넌트가 정의되고 있는 경우, 그 컴퍼넌트에 포함되는 것은, 단가 기호 (「@」)와 「미예약」, 「구두점」, 「이스케이프」, 「그 외」의 몇개의 카테고리에 포함되는 문자만입니다. 기관이 서버 베이스인 경우, 그 기관은 게다가 유효한 사용자 정보, 호스트, 포트의 각 컴퍼넌트를 가지도록(듯이) 제약됩니다.
public String getAuthority()
이 메소드로부터 반환되는 캐릭터 라인은,getRawAuthority
메소드로부터 반환되는 캐릭터 라인과 거의 같습니다. 다른 것은, 이스케이프 된 8중창의 순서가 모두디코드되고 있는 점만입니다.
public String getRawUserInfo()
URI 의 사용자 정보 컴퍼넌트에는 (정의되고 있는 경우), 「미예약」, 「구두점」, 「이스케이프」, 및 「그 외」의 카테고리의 문자만이 포함됩니다.
public String getUserInfo()
이 메소드로부터 반환되는 캐릭터 라인은,getRawUserInfo
메소드로부터 반환되는 캐릭터 라인과 거의 같습니다. 다른 것은, 이스케이프 된 8중창의 순서가 모두디코드되고 있는 점만입니다.
public String getHost()
URI 의 호스트 컴퍼넌트 (정의되고 있는 경우)의 형식은, 다음의 머지않아인가입니다.
도메인명. 1 개(살) 이상의 「라벨」을 피리어드 문자 (「.」)로 단락지은 형식이 됩니다. 말미에 피리어드 문자를 1 개 붙여도 괜찮습니다. 각 라벨은 「영숫자」문자와 하이픈 문자 (「-」)로부터 구성됩니다. 다만, 하이픈이 라벨내의 선두 또는 말미의 문자로서 사용될 것은 없습니다. 2 개(살) 이상의 라벨로 구성되는 도메인명의 가장 우측의 라벨은, 「영문자」문자로 시작됩니다.
숫자+. 숫자+. 숫자+. 숫자+ 의 형식의, 닷으로 4 개로 구분된 IPv4 주소. 여기서, 숫자는 3 문자 이내에서, 그 값은 255 를 넘지 않습니다.
IPv6 주소. 꺽쇄묶음 (「[」과「]」)으로 둘러싸여 16 진수, 구두점 문자 (「:」), 및 경우에 따라서는 묻어 IPv4 주소로 구성됩니다. IPv6 주소의 완전한 구문은,「RFC 2373: IPv6 Addressing Architecture」로 지정되고 있습니다.
public int getPort()
URI 의 포트 컴퍼넌트는 (정의되고 있는 경우), 부가 아닌 정수입니다.
public String getRawPath()
URI 의 패스 컴포넌트에는 (정의되고 있는 경우), slash (/), 단가 기호 (@)와 「미예약」, 「구두점」, 「이스케이프」, 및 「그 외」의 카테고리의 문자만이 포함됩니다.
public String getPath()
이 메소드로부터 반환되는 캐릭터 라인은,getRawPath
메소드로부터 반환되는 캐릭터 라인과 거의 같습니다. 다른 것은, 이스케이프 된 8중창의 순서가 모두디코드되고 있는 점만입니다.
public String getRawQuery()
URI 의 쿼리컴퍼넌트에는 (정의되고 있는 경우), 유효한 URI 문자만이 포함됩니다.
public String getQuery()
이 메소드로부터 반환되는 캐릭터 라인은,getRawQuery
메소드로부터 반환되는 캐릭터 라인과 거의 같습니다. 다른 것은, 이스케이프 된 8중창의 순서가 모두디코드되고 있는 점만입니다.
public String getRawFragment()
URI 의 fragment 컴퍼넌트에는 (정의되고 있는 경우), 유효한 URI 문자만이 포함됩니다.
public String getFragment()
이 메소드로부터 반환되는 캐릭터 라인은,getRawFragment
메소드로부터 반환되는 캐릭터 라인과 거의 같습니다. 다른 것은, 이스케이프 된 8중창의 순서가 모두디코드되고 있는 점만입니다.
public boolean equals(Object ob)
지정된 객체가 URI 가 아닌 경우, 이 메소드는 즉시 false 를 돌려줍니다.
2 개의 URI 가 동일하다고 보이려면 , 어느쪽이나 불투명 URI 인지, 어느쪽이나 계층 URI 일 필요가 있습니다. schema는, 어느쪽이나 지정되지 않은지, 대문자와 소문자를 구별하지 않는 경우에 동일하지 않으면 안됩니다. fragment는, 어느쪽이나 지정되지 않은지, 동일하지 않으면 안됩니다.
동일하다고 보여지는 2 개의 불투명 URI 의 경우, 그러한 schema 고유 부분은 동일할 필요가 있습니다.
2 개의 계층 URI 가 동일하다고 보이려면 , 패스가 동일하고, 쿼리가 어느쪽이나 미정도리일까 동일하지 않으면 안됩니다. 기관은, 어느쪽이나 지정되지 않은지, 어느쪽이나 레지스트리 베이스인지, 어느쪽이나 서버 베이스가 아니면 안됩니다. 기관이 정의되고 있어 레지스트리 베이스인 경우, 그러한 기관은 동일하지 않으면 안됩니다. 기관이 정의되고 있어 서버 베이스인 경우, 대문자와 소문자를 구별하지 않는 경우에 호스트가 동일하고, 포트 번호가 동일하고, 사용자 정보 컴퍼넌트가 동일하지 않으면 안됩니다.
2 개의 URI 의 사용자 정보, 패스, 쿼리, fragment, 기관, 또는 schema 고유 부분이 동일한지 어떤지 판정하는 경우, 이러한 컴퍼넌트는 encode 된 형식이 아니고 그대로의 형식에서 비교되어 이스케이프 된 8중창의 16 진수는 대문자 소문자에 관계없이 비교됩니다.
이 메소드는 Object.equals
메소드의 범용 규약을 채웁니다.
Object
내의 equals
ob
- 이 객체와 비교하는 객체
Object.hashCode()
,
Hashtable
public int hashCode()
Object.hashCode
메소드의 범용 규약을 채웁니다.
Object
내의 hashCode
Object.equals(java.lang.Object)
,
Hashtable
public int compareTo(URI that)
2 개의 URI 의 대응하는 컴퍼넌트를 비교할 때에, 한편의 컴퍼넌트가 지정되지 않은데 한편이 정의가 끝난 상태였을 경우, 전자 쪽이 후자보다 작다고 보입니다. 특히 명기되어 있지 않은 한, 캐릭터 라인 컴퍼넌트는,String.compareTo
메소드로 정의되고 있도록(듯이), 본래의 대문자 소문자를 구별한 순서에 따라 순서 붙일 수 있습니다. encode의 대상이 되는 캐릭터 라인 컴퍼넌트의 비교는, encode 된 형식은 아니고 그대로의 형식에서 비교됩니다.
URI 의 순서는 다음과 같이 정의됩니다.
다른 schema를 가지는 2 개의 URI 는, 대문자 소문자에 관계없이 그러한 schema의 순서에 따라 순서 붙일 수 있다.
계층 URI 는, 같은 schema를 가지는 불투명 URI 보다 작다고 보여진다.
같은 schema를 가지는 2 개의 불투명 URI 는, 그러한 schema 고유 부분의 순서에 따라 순서 붙일 수 있다.
같은 schema와 schema 고유 부분을 가지는 2 개의 불투명 URI 는, 그러한 fragment의 순서에 따라 순서 붙일 수 있다.
같은 schema를 가지는 2 개의 계층 URI 는, 그러한 기관 컴퍼넌트의 순서에 따라 순서 붙일 수 있다.
양쪽 모두의 기관 컴퍼넌트가 서버 베이스인 경우, URI 는 그러한 사용자 정보 컴퍼넌트에 따라 순서 붙일 수 있다. 이러한 컴퍼넌트가 같은 경우, URI 는 대문자 소문자에 관계없이 그러한 호스트의 순서에 따라 순서 붙일 수 있다. 호스트가 같은 경우, URI 는 그러한 포트의 순서에 따라 순서 붙일 수 있다.
한편 또는 양쪽 모두의 기관 컴퍼넌트가 레지스트리 베이스인 경우, URI 는 그러한 기관 컴퍼넌트의 순서에 따라 순서 붙일 수 있다.
마지막으로, 같은 schema와 기관 컴퍼넌트를 가지는 2 개의 계층 URI 는, 그러한 패스의 순서에 따라 순서 붙일 수 있다. 패스가 같은 경우, 빈 상태(empty)등의 계층 URI 는, 그러한 쿼리의 순서에 따라 순서 붙일 수 있다. 쿼리가 같은 경우는, 그러한 fragment의 순서에 따라 순서 붙일 수 있다.
이 메소드는 Comparable.compareTo
메소드의 범용 규약을 채웁니다.
Comparable <URI >
내의 compareTo
that
- 이 URI 와 비교하는 객체
ClassCastException
- 지정된 객체가 URI 가 아닌 경우public String toString()
이 URI 가 이 클래스의 몇개의 생성자 을 호출하는 것으로 작성된 것인 경우, 원의 입력 캐릭터 라인과 등가인 캐릭터 라인, 또는 최초로 지정된 컴퍼넌트로부터 적당 계산된 캐릭터 라인과 등가인 캐릭터 라인이 돌려주어집니다. 그 이외의 경우, 이 URI 는 정규화, 해결, 또는 상대화에 의해 작성된 것이므로,「RFC 2396」의 섹션 5. 2, 스텝 7 의 규칙에 따라, 이 URI 의 컴퍼넌트로부터 캐릭터 라인이 구축됩니다.
Object
내의 toString
public String toASCIIString()
이 URI 에 「그 외」카테고리의 문자가 1 개도 포함되지 않은 경우, 이 메소드를 호출하면(자),toString
메소드 호출시와 같은 값이 돌려주어집니다. 그 이외의 경우, 그 메소드의 호출 후에 결과를encode 했는지와 같이, 이 메소드는 동작합니다.
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.