> Java > java지도 시간 > 본문

여러 Java 일반 예제 공유

高洛峰
풀어 주다: 2017-01-18 11:00:05
원래의
1306명이 탐색했습니다.

1. 일반 클래스

1.1 일반 일반

package test.lujianing;
/**
 * 泛型类
 * @param <T>
 */
class Test<T>{
    private T obj;
    public void setValue(T obj){
        this.obj =obj;
    }
    public T getValue(){
        System.out.println(obj.getClass().getName());
        return obj;
    }
}
/**
 * 测试泛型类
 */
public class TestOne {
    public static void main(String[] args) {
        //测试Integer泛型
        Test<Integer> t1 = new Test<Integer>();
        t1.setValue(5);
        Integer i = t1.getValue();
        System.out.println(i);
        //测试Double泛型
        Test<Double> t2 = new Test<Double>();
        t2.setValue(5.55D);
        Double d = t2.getValue();
        System.out.println(d);
        //测试String泛型
        Test<String> t3 = new Test<String>();
        t3.setValue("hello world");
        String str =t3.getValue();
        System.out.println(str);
    }
}
로그인 후 복사

출력 결과:

java.lang.Integer
5
java.lang.Double
5.55
java.lang.String
hello world
로그인 후 복사

1.2 K/V 일반

package test.lujianing;
import java.util.HashMap;
import java.util.Map;
/**
 * Created by Administrator on 14-3-30.
 */
class TestKV<K,V>{
    private Map<K,V> map=new HashMap<K, V>();
    public void put(K k, V v) {
        map.put(k,v);
    }
    public V get(K k) {
        return map.get(k);
    }
}
public class TestFour{
    public static void main(String[] args) {
        TestKV<String,String> t = new TestKV<String, String>();
        t.put("name","jianing");
        System.out.println(t.get("name"));
        TestKV<String,Integer> t2 = new TestKV<String, Integer>();
        t2.put("age",24);
        System.out.println(t2.get("age"));
    }
}
로그인 후 복사

출력 결과:

jianing
24
로그인 후 복사

2. 일반 인터페이스

package test.lujianing;
/**
 * 泛型接口
 * @param <T>
 */
public interface TestImpl<T> {
    public void setValue(T t);
    public T getValue();
}
로그인 후 복사

출력 결과:

1
hello word
로그인 후 복사

3. 일반 메서드

package test.lujianing;
/**
 * 泛型方法类
 */
class TestMethod{
    /**
     * 泛型方法
     */
    public <T>T getValue(Object s,Class<T> clazz) {
        System.out.println(clazz.getName());
        T t =null;
        if(clazz.getName().equals("java.lang.Integer")){
            Double d = Double.parseDouble(s.toString());
            int i =d.intValue();
            t=(T)new Integer(i);
        }
        if(clazz.getName().equals("java.lang.Double")){
            t=(T)new Double(s.toString());
        }
        return t;
    }
}
/**
 * 泛型方法测试类
 */
public class TestThree {
    public static void main(String[] args) {
        TestMethod t = new TestMethod();
        int i =t.getValue("30.0011",Integer.class);
        System.out.println(i);
        double d  =t.getValue("40.0022",Double.class);
        System.out.println(d);
    }
}
로그인 후 복사

출력 결과:

java.lang.Integer
30
java.lang.Double
40.0022
로그인 후 복사

4. generics

위의 예에서는 Test 유형 홀더 T의 범위에 제한이 없으며 기본 제한 유형은 Object와 동일합니다. 예를 들어, T를 디지털 인터페이스 유형으로 제한하고 싶습니다. 이렇게 하면 됩니다. 클래스 Test 이렇게 하면 클래스의 일반 T는 Number 인터페이스의 구현 클래스만 될 수 있습니다.

5. 와일드카드 제네릭

package test.lujianing;
import java.util.HashMap;
import java.util.Map;
/**
 * 通配泛型
 */
public class TestFive {
    public static void main(String[] args) {
        Map<String,Class<? extends Number>> map = new HashMap<String,Class<? extends Number>>();
        map.put("Integer",Integer.class);
        map.put("Double",Double.class);

        for (Map.Entry<String,Class<? extends Number>> entry : map.entrySet()) {
            System.out.println("key:" + entry.getKey() + " value:" + entry.getValue());
        }
    }
}
로그인 후 복사

출력 결과:

key:Double value:class java.lang.Double
key:Integer value:class java.lang.Integer
로그인 후 복사

간단한 예: 1.1의 예

public static void main(String[] args) {
        //测试Integer泛型
        Test<Integer> t1 = new Test<Integer>();
        t1.setValue(5);
        fun(t1);
        //测试Double泛型
        Test<Double> t2 = new Test<Double>();
        t2.setValue(5.55D);
        fun(t2);
    }
    public static void fun(Test<?> t){
        System.out.println("通配泛型"+t.getValue());
    }
로그인 후 복사

출력 결과:

java.lang.Integer
通配泛型5
java.lang.Double
通配泛型5.55
로그인 후 복사

6. 보충

generic에서는 등을 만날 수 있습니다. T와 E는 각각 Type과 Element의 첫 글자입니다. E는 일반적으로 List 인터페이스의 정의와 같이 컬렉션 유형의 요소 유형을 나타내는 데 사용됩니다. 공개 인터페이스 List는 Collection를 확장합니다. 이는 단지 명명 규칙일 뿐이며 둘 사이에는 본질적인 차이가 없습니다.

더 많은 Java 일반 예제 및 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

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