> Java > java지도 시간 > Java 람다 표현식 분석 및 일반 응용 사례

Java 람다 표현식 분석 및 일반 응용 사례

PHPz
풀어 주다: 2023-05-03 18:16:07
앞으로
1048명이 탐색했습니다.

Generics

generics의 문법 정의

클래스 클래스 이름 <일반 식별자, 일반 식별자, …>{ 전용 일반 식별자 1, 변수 이름; 일반적으로 사용되는 일반 식별자: T, E, K ,V } 일반적인 작성 방법 in it

public class GenericDemo<K> {
    //定义数组
    private K[] arr;
}
로그인 후 복사

제네릭 구문 사용

  • 클래스 이름<특정 데이터> 개체 이름 = 새 클래스 이름<특정 데이터 유형>()

  • jdk1.7 이후에는 다음과 같은 <> 생략

  • 클래스 이름 <특정 데이터> 개체 이름 = 새 클래스 이름 <> ()

일반 요약

  • 유형 매개변수화로 클래스 정의가 더욱 보편적이게 됩니다

  • Generics는 기본 유형을 컴파일 타임에 Object로 변환할 수 없기 때문에 기본 유형을 지원하지 않습니다

  • 객체 생성 시 데이터 유형을 지정하지 않으면 Generic 클래스는 객체 유형에 따라 작동합니다

  • 동일한 제네릭 클래스는 논리적으로 여러 다른 유형으로 간주될 수 있지만 실제로는 동일한 유형입니다

제네릭 클래스에서 파생된 하위 클래스

하위 클래스도 제네릭입니다. 하위 클래스와 상위 클래스의 제네릭은 일관성이 있어야 합니다( 예를 들어 제네릭의 T 유형도 일관성이 있어야 하며 작성된 내용이 동일해야 합니다.)

상위 클래스가 유형을 지정하지 않으면 상위 클래스는 Object 유형으로 처리되어야 합니다

public class Child<T> extends Parent<T> {
}
로그인 후 복사

child 클래스는 제네릭이 아니며 상위 클래스는 제네릭 유형을 지정해야 합니다.

상위 클래스가 유형을 지정하지 않으면 상위 클래스는 이를 객체 유형으로 처리해야 합니다.

Generic 인터페이스

  • 구문 정의 일반 인터페이스: 인터페이스 인터페이스 이름<일반 식별자 1, 일반 식별자 2, …>{ 일반 식별자 메서드 이름() … }

  • 구현 클래스도 일반 클래스입니다. 인터페이스는 일관성이 있어야 합니다. 인터페이스가 일관되지 않으면 유형이 지정되면 인터페이스는 객체 유형에 따라 처리됩니다

  • 구현 클래스는 제네릭이 아니며 인터페이스는 제네릭 인터페이스의 데이터 유형을 지정해야 합니다. . 인터페이스에서 유형을 지정하지 않으면 객체 유형에 따라 인터페이스가 처리됩니다

lambda 표현식

lambda 표현식 개념

  • 객체 지향 프로그래밍에서는 작업이 객체 형태로 수행되어야 함을 강조합니다. ; 함수적 사고는 객체의 복잡한 작성을 무시하려고 시도하며 "무엇을 해야 할지를 강조하지만, 어떤 형식으로 해야 할지를 강조합니다"

  • lambda 표현은 함수 아이디어의 구체화입니다

  • lambda 표현은 다음을 단순화한 방식입니다. 함수 호출을 작성하는 단순화된 방법이 아닌 함수 표현식 정의

lambda 표현식 형식

  • 세 가지 요소: 형식 매개변수, 화살표, 코드 블록

  • 형식: (형식 매개변수)-> code block

  • 정식 매개변수가 여러 개인 경우 쉼표로 구분하세요. 매개변수가 없으면 공백 없이 빈 괄호를 남겨주세요.

  • -> 실행 표시

  • 코드 블록: 수행할 특정 작업

  • 사용 전제 조건: 인터페이스 사용: 인터페이스에는 하나의 추상 메소드만 있습니다

코드 예:

package com.lambda;
public class Lambda {
    public static void main(String[] args) {
        //正常写法
        Mythread mythread = new Mythread();
        Thread t = new Thread(mythread);
        t.start();
        //匿名内部类
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("多线程1就绪了");
            }
        }).start();
        //lambda表达式:创建线程
        new Thread(()->{
            System.out.println("多线程2就绪了");
        }).start();
    }
}
class Mythread implements Runnable{
    @Override
    public void run() {
        System.out.println("多线程就绪");
    }
}
로그인 후 복사

위 내용은 Java 람다 표현식 분석 및 일반 응용 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿