Java知识点详解 8,2021Java岗面试题知识点小结

Posted 程序员超时空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java知识点详解 8,2021Java岗面试题知识点小结相关的知识,希望对你有一定的参考价值。

1、代码实例


package com.reflection;



import java.lang.reflect.Method;

import java.lang.reflect.ParameterizedType;

import java.lang.reflect.Type;

import java.util.List;

import java.util.Map;



public class Test04 {

    public void test01(Map<String,User> map, List<User> list){

        System.out.println("test01");

    }



    public Map<String,User> test02(){

        System.out.println("test02");

        return null;

    }



    //通过反射获取泛型信息

    public static void main(String[] args) throws Exception {

        Method method = Test04.class.getMethod("test01", Map.class, List.class);

        Type[] genericParameterTypes = method.getGenericParameterTypes();

        for (Type genericParameterType : genericParameterTypes) {

            System.out.println("***"+genericParameterType);

            if(genericParameterType instanceof ParameterizedType){

                Type[] actualTypeArguments = ((ParameterizedType) genericParameterType).getActualTypeArguments();

                for (Type actualTypeArgument : actualTypeArguments) {

                    System.out.println(actualTypeArgument);

                }

            }

        }



        method = Test04.class.getMethod("test02", null);

        Type genericReturnType = method.getGenericReturnType();

        if(genericReturnType instanceof ParameterizedType){

            Type[] actualTypeArguments = ((ParameterizedType) genericReturnType).getActualTypeArguments();

            for (Type actualTypeArgument : actualTypeArguments) {

                System.out.println("test02,"+actualTypeArgument);

            }

        }

    }

} 

2、控制台输出

3、反射解决泛型问题

六、通过反射获取注解信息


1、代码实例


package com.reflection;



import java.lang.annotation.*;

import java.lang.reflect.Field;



public class Test05 {

    public static void main(String[] args) throws Exception {

        Class c1 = Class.forName("com.reflection.Student");



        //通过反射获取注解

        Annotation[] annotations = c1.getAnnotations();

        for (Annotation annotation : annotations) {

            System.out.println(annotation);

        }



        //获得注解value的值

        TableSu tableSu = (TableSu) c1.getAnnotation(TableSu.class);

        String value = tableSu.value();

        System.out.println(value);



        //获得类指定的注解

        Field field = c1.getDeclaredField("name");

        FieldSu annotation = field.getAnnotation(FieldSu.class);

        System.out.println(annotation.columnName());

        System.out.println(annotation.type());

        System.out.println(annotation.length());

    }

}



@TableSu("db_student")

class Student{

    @FieldSu(columnName = "db_id",type = "int",length = 10)

    private int id;

    @FieldSu(columnName = "db_name",type = "varchar2",length = 10)

    private String name;

    @FieldSu(columnName = "db_age",type = "int",length = 10)

    private int age;



    public Student() {

    }



    public Student(int id, String name, int age) {

        this.id = id;

        this.name = name;

        this.age = age;

    }



    public int getId() {

        return id;

    }



    public void setId(int id) {

        this.id = id;

    }



    public String getName() {

        return name;

    }



    public void setName(String name) {

        this.name = name;

    }



    public int getAge() {

        return age;

    }



    public void setAge(int age) {

        this.age = age;

    }



    @Override

    public String toString() {

        return "Student{" +

                "id=" + id +

                ", name='" + name + '\\'' +

                ", age=" + age +

                '}';

    }

}



//类名的注解

@Target(ElementType.TYPE)

@Retention(RetentionPolicy.RUNTIME)

@interface TableSu{

    String value();

}



//属性的注解

@Target(ElementType.FIELD)

@Retention(RetentionPolicy.RUNTIME)

@interface FieldSu{

    String columnName();

    String type();

    int length();

}

2、控制台输出

七、通过配置文件动态调用方法


1、在项目根目录建Class.txt文件,内容如下


classname=com.guor.reflect.Person

methodname=getPerson

2、建一个Person类


package com.guor.reflect;



public class Person {

    private int id;

    private String name;



    public Person() {

    }



    public Person(int id, String name) {

        this.id = id;

        this.name = name;

    }



    public static void getPerson(){

        System.out.println("i am a person.");

    }

} 

总结

一般像这样的大企业都有好几轮面试,所以自己一定要花点时间去收集整理一下公司的背景,公司的企业文化,俗话说「知己知彼百战不殆」,不要盲目的去面试,还有很多人关心怎么去跟HR谈薪资。

这边给大家一个建议,如果你的理想薪资是30K,你完全可以跟HR谈33~35K,而不是一下子就把自己的底牌暴露了出来,不过肯定不能说的这么直接,比如原来你的公司是25K,你可以跟HR讲原来的薪资是多少,你们这边能给到我的是多少?你说我这边希望可以有一个20%涨薪。

最后再说几句关于招聘平台的,总之,简历投递给公司之前,请确认下这家公司到底咋样,先去百度了解下,别被坑了,每个平台都有一些居心不良的广告党等着你上钩,千万别上当!!!

提供【免费】的Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。

Java全套进阶资料点这里免费领取

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书。
的这么直接,比如原来你的公司是25K,你可以跟HR讲原来的薪资是多少,你们这边能给到我的是多少?你说我这边希望可以有一个20%涨薪。

最后再说几句关于招聘平台的,总之,简历投递给公司之前,请确认下这家公司到底咋样,先去百度了解下,别被坑了,每个平台都有一些居心不良的广告党等着你上钩,千万别上当!!!

提供【免费】的Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。

Java全套进阶资料点这里免费领取

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书。

以上是关于Java知识点详解 8,2021Java岗面试题知识点小结的主要内容,如果未能解决你的问题,请参考以下文章

2021京东 Android 岗 Java 面试真题解析

2021京东 Android 岗 Java 面试真题解析

Java软件开发面试题!2021年京东Java岗面试必问

阿里内部高频Java岗面试手册(2021版)带答案,助力各位备战的码农!

2021百度Java岗面试真题收录解析

2021年阿里Java岗面试必问,含答案解析