我是靠谱客的博主 干净店员,最近开发中收集的这篇文章主要介绍java reflection list_Java Reflection从Field获取实例,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

有没有办法从一个领域获得实例?

这是一个示例代码:

public class Apple {

// ... a bunch of stuffs..

}

public class Person {

@MyAnnotation(value=123)

private Apple apple;

}

public class AppleList {

public add(Apple apple) {

//...

}

}

public class Main {

public static void main(String args[]) {

Person person = new Person();

Field field = person.getClass().getDeclaredField("apple");

// Do some random stuffs with the annotation ...

AppleList appleList = new AppleList();

// Now I want to add the "apple" instance into appleList, which I think

// that is inside of field.

appleList.add( .. . // how do I add it here? is it possible?

// I can't do .. .add( field );

// nor .add( (Apple) field );

}

}

我需要使用Reflection,因为我正在使用它带注释.这只是一个“样本”,方法AppleList.add(Apple apple)实际上是通过从类中获取方法然后调用它来调用的.

并且这样做,如:method.invoke(appleList,field);

cause:java.lang.IllegalArgumentException:参数类型不匹配

*编辑*

这可能对那些正在寻找同样事物的人有所帮助.

如果是Person类,则有2个或更多Apple变量:

public class Person {

private Apple appleOne;

private Apple appleTwo;

private Apple appleThree;

}

当我得到Field时,如:

Person person = new Person();

// populate person

Field field = person.getClass().getDeclaredField("appleTwo");

// and now I'm getting the instance...

Apple apple = (Apple) field.get( person );

// this will actually get me the instance "appleTwo"

// because of the field itself...

一开始,只看一下这条线:( Apple)field.get(person);

让我觉得它会去找一个与Apple课程相匹配的实例.

这就是为什么我想知道:“苹果会回归哪个?”

最后

以上就是干净店员为你收集整理的java reflection list_Java Reflection从Field获取实例的全部内容,希望文章能够帮你解决java reflection list_Java Reflection从Field获取实例所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部