자바에서 (각도괄호) 는 무엇을 의미하는가?
나는 현재 자바에 대해 공부하고 있으며, 최근에 각괄호(<)에 의해 쩔쩔맸다.정확히 무슨 뜻이지?
public class Pool<T>{
public interface PoolFactory<T>{
public T createObject();
}
this.freeObjects = new ArrayList<T>(maxsize)
}
는 무엇인가?<T>
평균? 그것은 내가 타입의 물체를 만들 수 있다는 것을 의미하는가?T
?
<T>
일반적으로 "유형 T"로 읽힐 수 있다.<<>>의 왼쪽에 있는 활자에 따라 실제로 어떤 의미가 있느냐에 따라 달라진다.
무슨 일이 있었는지 모르겠다.Pool
또는PoolFactory
하지만 네가 언급하는 건ArrayList<T>
표준 자바 수업이니까 내가 얘기해 볼게.
보통은 'T'가 보이지 않고, 다른 타입이 보일 겁니다.그래서 보면.ArrayList<Integer>
예를 들어, 그것은 "An"을 의미한다.ArrayList
의Integer
s." 많은 클래스는 예를 들어 용기의 원소 유형을 구속하기 위해 제네릭을 사용한다.또 다른 예는 다음과 같다.HashMap<String, Integer>
, 그 의미는 "가져 있는 지도"를 의미한다.String
키와Integer
가치관."
클래스를 정의하고 있기 때문에 풀의 예는 약간 다르다.그래서 그 경우에 당신은 T 대신에 다른 누군가가 특정 타입으로 인스턴스화할 수 있는 클래스를 만들고 있는 것이다.예를 들어, 유형 객체를 만들 수 있다.Pool<String>
클래스 정의 사용.그것은 두 가지를 의미할 것이다.
- 나의
Pool<String>
인터페이스가 있을 겁니다PoolFactory<String>
A과 함께createObject
돌아오는 방법String
s - 내부적으로는
Pool<String>
을 포함할 것이다.ArrayList
현악의
이것은 대단한 뉴스인데, 왜냐하면 다른 때에는 내가 와서 그 일을 만들어 낼 수 있기 때문이다.Pool<Integer>
같은 코드를 사용하지만Integer
보이는 곳마다T
근원에
정말 간단합니다.J2SE 5에 도입된 새로운 기능이다. 클래스 이름 뒤에 각괄호를 지정한다는 것은 어떤 종류의 데이터라도 담을 수 있는 임시 데이터 유형을 생성한다는 것을 의미한다.
예:
class A<T>{
T obj;
void add(T obj){
this.obj=obj;
}
T get(){
return obj;
}
}
public class generics {
static<E> void print(E[] elements){
for(E element:elements){
System.out.println(element);
}
}
public static void main(String[] args) {
A<String> obj=new A<String>();
A<Integer> obj1=new A<Integer>();
obj.add("hello");
obj1.add(6);
System.out.println(obj.get());
System.out.println(obj1.get());
Integer[] arr={1,3,5,7};
print(arr);
}
}
대신에<T>
어떤 것이든 실제로 쓸 수 있고 그것은 같은 방식으로 작동할 것이다.써봐<ABC>
대신에<T>
.
이것은 단지 편의를 위한 것이다.
<T>
어떤 유형이라고 한다.<E>
원소형으로서<N>
수형식으로<V>
값어치로<K>
핵심으로서
하지만 원하는 건 뭐든지 이름을 붙일 수 있어, 그건 중요하지 않아.
게다가Integer
,String
,Boolean
등은 컴파일하는 동안 유형을 확인하는 데 도움을 주는 자바의 래퍼 클래스다.예를 들어, 위의 코드에서obj
형식이다.String
, 따라서 다른 유형을 추가할 수 없음(시도)obj.add(1)
에러를 발생시킬 것이다).마찬가지로obj1
의 것이다Integer
유형, 다른 유형을 추가할 수 없음(시도)obj1.add("hello")
, 에러가 있을 것이다).
그것은 자바에서의 제네릭과 관련이 있다.만약 내가 말했다면ArrayList<String>
즉, 해당 ArrayList에 String 유형 개체만 추가할 수 있다.
자바에서 제네릭의 두 가지 주요 이점은 다음과 같다.
- 프로그램의 출연자 수를 줄임으로써 프로그램의 잠재적인 버그 수를 줄임.
- 코드 명확성 개선
일반형이라고 불린다.다음과 같이 개체 풀을 인스턴스화할 수 있음:
PoolFactory<Integer> pool = new Pool<Integer>();
일반 파라미터는 참조 형식일 수 있다.그래서 당신은 int나 double, char 또는 다른 원시 타입과 같은 원시 타입을 사용할 수 없다.
<>
Java에서 제네릭을 나타내기 위해 사용된다.
T
이 예에서는 형식 매개 변수 입니다.그리고 아니다: 인스턴스화는 여러분이 할 수 없는 몇 안 되는 것 중 하나이다.T
.
위에 링크된 자습서 외에도 안젤리카 랭거스 제네릭스에 관한 FAQ는 이 주제에 관한 훌륭한 자료다.
일반 클래스는 데이터 유형이 생성될 때 매개 변수로 사용하는 클래스의 유형이다.이 형식 매개 변수는 각 괄호를 사용하여 지정되며 클래스의 새 인스턴스가 인스턴스화될 때마다 형식이 변경될 수 있다.예를 들어 직원 개체와 회사 개체에 대해 어레이 목록을 생성해 봅시다.
ArrayList<Employee> employees = new ArrayList<Employee>();
ArrayList<Company> companies = new ArrayList<Company>();
두 목록을 모두 작성하기 위해 동일한 ArrayList 클래스를 사용하고 있으며 각괄호를 사용하여 직원 또는 회사 유형을 전달한다는 것을 알 수 있을 것이다.하나의 일반 클래스를 갖는 것은 유사한 작업을 수행하는 많은 클래스를 갖는 것에 대한 여러 유형의 데이터 삭감을 처리할 수 있다.제네릭스는 또한 컴파일러가 오류를 지적하는 데 도움이 되는 강한 타입의 모든 것을 제공함으로써 버그를 줄이는 데 도움을 준다.ArrayList에 대한 유형을 지정함으로써 컴파일러가 회사 목록에 직원을 추가하려고 하거나 그 반대로 직원을 추가하려고 할 경우 오류를 발생시킨다.
참조URL: https://stackoverflow.com/questions/6607550/what-does-t-angle-brackets-mean-in-java
'programing' 카테고리의 다른 글
간단한 문자열 반복 방법 (0) | 2022.05.24 |
---|---|
Mockito에서 미완성 스터빙이 탐지됨 (0) | 2022.05.24 |
Vue.js $emit와 $dispatch의 차이점은 무엇인가? (0) | 2022.05.24 |
공리가 있는 진행 막대 (0) | 2022.05.24 |
vuex에 여러 플러그인을 등록하는 방법? (0) | 2022.05.24 |