[완료]java 문법 질문 드립니다.

hanseok의 이미지

자바를 사용안하다가
eclipse를 사용하면서 조금씩 사용하고 있습니다. (핑계)

그런데 모르는 문법(?)이 있어서 글을 적습니다.

1. Map<?,?>
protected static Map<?, ?> mergeMaps(Map<?, ?> map1, Map<?, ?> map2)
이것이 무엇을 의미하나요? 소스에서는 위에 라인처럼 사용하네요

public int getFeatureID(Class<?> expectedClass)

무엇인가 레퍼런스 하기위해서는 object를 적어주면 될텐데 ? 를 ..
protected Map<Object, Object> defaultDeleteOptions;

2. .class
파일의 확장자가 아니라. 소스코드안에 있는 것입니다.
new EObjectContainmentEList<Component>(Component.class, this, ShapePackage.COMPONENT_DIAGRAM__COMPONENT);

레퍼런스 사이트도 좋구요?
쉬운 설명도 감사드리겠습니다.

저게 문법인것은 맞겠죠.(제목을 문법이라고 적어서 )

M.W.Park의 이미지

http://java.sun.com/developer/technicalArticles/J2SE/generics/

아랫부분의 wildcard 참조.

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

hanseok의 이미지

? 에 대한 의미는 짧은 영어로 짧게(?) 이해 했습니다.

"?": Denotes the set of all types or any

object와 ? 사이에 차이가 무엇일까? 하는 궁금증이 생기네요

object로 하면 모든 객체를 레퍼런스 할수 있는데

객체와 type의 차이? 음.

글 다시 적다가 궁금해 졌습니다.

레퍼런스 URL 감사합니다.

잠이 들어야지만 꿈을 꿀수 있는것인가?
우리는 항상 꿈을 쫓아 가며 살아가는 사람들..

serialx의 이미지

int 는 object 가 아니지요.. 즉 primitive type 을 포함한 개념이 아닌가 합니다.

M.W.Park의 이미지

머 어렵게 생각하시지 마시고,
java generics에서 '?'는 여타 언어의 '_'(underscore)와 비슷하다고 보시면 될듯합니다.
표기상으로는 placeholder 쯤으로, 의미상으로는 anonymous class 정도??

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

winner의 이미지

^_^

winner의 이미지

운영자님 어떻게 지워주실 수 없나요?... T.T

Vector<Object> a = new Vector<Integer>(); /* error */
Vector<?> a = new Vector<Integer>(); /* OK */

라고 합니다.

Object는 Integer의 상위 class이지만 Object를 담는 collection이
Object의 하위 class를 담는 collection의 상위 class는 아니기 때문이라는군요.

비슷하게 short의 내용은 int에 손실없이 담을 수 있지만
short를 가리키는 pointer를 int를 가리키는 pointer로 변환할 수는 없지요.

winner의 이미지

Vector a = Vector;
라고 쓸 수가 없다더군요.

왜냐하면 Object가 Integer의 상위 class이지
Vector가 Vector의 상위 class는 아니기 때문에...

그래서 등장한 것이 Vector<?> a = Vector;
라고 나오더군요.

그정도로만 이해하고 있습니다... -_-.

winner의 이미지

Vector<Object> a = new Vector<Integer>;

라고 할 수가 없다는군요.
왜냐하면 Object가 Integer의 상위 class이지 Vector\
Vector\의 상위 class가 아니라는군요.

winner의 이미지

이거 어렵군요. -_-
꺽쇠가 들어가다보니...
운영자님 위에 글 지워줄 수 있으면 감사하겠습니다.

다시 쓰자면
제가 수업들었던 내용은 Object는 분명 Integer의 상위 class이지만
그렇다고 Object를 담는 collection이 Integer를 담는 collection의
상위 class가 아니기 때문에 등장했다고 했습니다.
?은 담는 collection은 어떤 class를 담는 collection도 대입할 수 있다는군요.

Vector<Object> a = new Vector<Integer>(); /* error */
Vector<?> a = new Vector<integer>(); /* OK */

라고 하네요

비슷하게

int는 short의 내용을 담을 수 있지만
그렇다고 short를 가리키는 pointer를 int를 가리키는 pointer로 변환할 수는 없지요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.