programing

자바에서 (각도괄호)는 무엇을 의미하는가?

prostudy 2022. 5. 24. 21:53
반응형

자바에서 (각도괄호)는 무엇을 의미하는가?

나는 현재 자바에 대해 공부하고 있으며, 최근에 각괄호(<)에 의해 쩔쩔맸다.정확히 무슨 뜻이지?

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"을 의미한다.ArrayListIntegers." 많은 클래스는 예를 들어 용기의 원소 유형을 구속하기 위해 제네릭을 사용한다.또 다른 예는 다음과 같다.HashMap<String, Integer>, 그 의미는 "가져 있는 지도"를 의미한다.String키와Integer가치관."

클래스를 정의하고 있기 때문에 풀의 예는 약간 다르다.그래서 그 경우에 당신은 T 대신에 다른 누군가가 특정 타입으로 인스턴스화할 수 있는 클래스를 만들고 있는 것이다.예를 들어, 유형 객체를 만들 수 있다.Pool<String>클래스 정의 사용.그것은 두 가지를 의미할 것이다.

  • 나의Pool<String>인터페이스가 있을 겁니다PoolFactory<String>A과 함께createObject돌아오는 방법Strings
  • 내부적으로는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 유형 개체만 추가할 수 있다.

자바에서 제네릭의 두 가지 주요 이점은 다음과 같다.

  1. 프로그램의 출연자 수를 줄임으로써 프로그램의 잠재적인 버그 수를 줄임.
  2. 코드 명확성 개선

일반형이라고 불린다.다음과 같이 개체 풀을 인스턴스화할 수 있음:

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

반응형