Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法获取自定义对象中的所有数据类型?_Java_Android_Caching - Fatal编程技术网

Java 有没有办法获取自定义对象中的所有数据类型?

Java 有没有办法获取自定义对象中的所有数据类型?,java,android,caching,Java,Android,Caching,我正在开发一个用于轻松测量自定义对象的运行时分配的工具。虽然我可以很好地编写缓存处理算法,但我在有机地访问自定义对象中的所有数据类型时遇到了一个问题。我想编写此API以获取任何自定义对象,只要它当前支持以下数据类型: Int 串 短 字节 长的 浮动 双重的 煤焦 布尔值 位图(仅适用于Android,但可以排除) 例如,以这个自定义对象类为例 package productions.widowmaker110.byteme; /** * Created by Widowmaker110

我正在开发一个用于轻松测量自定义对象的运行时分配的工具。虽然我可以很好地编写缓存处理算法,但我在有机地访问自定义对象中的所有数据类型时遇到了一个问题。我想编写此API以获取任何自定义对象,只要它当前支持以下数据类型:

  • Int
  • 字节
  • 长的
  • 浮动
  • 双重的
  • 煤焦
  • 布尔值
  • 位图(仅适用于Android,但可以排除)
例如,以这个自定义对象类为例

package productions.widowmaker110.byteme;

/**
 * Created by Widowmaker110 on 11/20/2015.
 *
 * This object class is meant to mimick possible data types held within a single object
 *
 * For simplicity, I will be mimicking a simplified user profile data
 */
public class ExampleObject {

    private String Name;
    private int Age;
    private String Location;
    private String Sex;
    private String Description;

    /**
     * Empty Constructor
     */
    public ExampleObject() {}

    /**
     * Basic constructor with initializing data
     *
     * @param _Name String with the name of the user
     * @param _Age Integer with the age of the user
     * @param _Location String containing the curret city and state of the user
     * @param _Sex String Male, Female, Transgender, or Other
     * @param _Description String short blurb about the user
     */
    public ExampleObject(String _Name, int _Age, String _Location, String _Sex, String _Description)
    {
        this.setName(_Name);
        this.setAge(_Age);
        this.setLocation(_Location);
        this.setSex(_Sex);
        this.setDescription(_Description);
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public int getAge() {
        return Age;
    }

    public void setAge(int age) {
        Age = age;
    }

    public String getLocation() {
        return Location;
    }

    public void setLocation(String location) {
        Location = location;
    }

    public String getSex() {
        return Sex;
    }

    public void setSex(String sex) {
        Sex = sex;
    }

    public String getDescription() {
        return Description;
    }

    public void setDescription(String description) {
        Description = description;
    }
}
我想做的是采取类似的措施,将所有数据点“传输”到我的缓存处理类,同时保持对象的当前形式(如果我能提供帮助的话)。我的第一个想法是让一个对象拥有一个给定对象的每种数据类型的数组,但在我看来,以这种方式解构自定义对象似乎很复杂。我可能看错了,但如果我做了以下事情:

Object(int[] int_array, String[] string_array, short[] short_array,
        long[] long_array, byte[] byte_array, float[] float_array,
        double[] double_array, char[] char_array, boolean[] boolean_array,
        Bitmap[] bitmap_array)
并要求程序员通过将所有数据点放入数组来输入它们

我对这个API的最终目标是将它放到一个项目中,并立即为您完成所有讨厌的缓存处理

编辑我的道歉,让它不清楚。我试图给出整个项目的范围,但可能给出的太多了。有没有什么方法可以在不知道哪些字段可用的情况下获取自定义类并对其进行解析,只要它们属于我在顶部列出的要点列表?我可以自己做缓存部分。这是否更清楚

EDIT#2 JFPicard指出,使用Java反射进行这种处理。在查看了以下内容后:

我发现这样的东西非常有用

import java.lang.reflect.Method;

...

Method[] methods = MyObject.class.getMethods();

for(Method method : methods){
    System.out.println("method = " + method.getName());
}

谢谢

我认为您需要使用反射来获取对象的所有getter,并获取数据来做一些事情


这里有一个很好的教程可以帮助您:

我认为您需要使用反射来获取对象的所有getter,并获取数据来做一些事情


这里有一个很好的教程可以帮助您:

堆栈溢出用于编程问题。我在这里看到的唯一问题是标题,这个问题不清楚。您能否更详细地解释一下您的问题是什么?您试图自动化哪种“缓存处理”?这里,反射似乎是唯一合乎逻辑的解决方案。堆栈溢出用于编程问题。我在这里看到的唯一问题是标题,这个问题不清楚。您能否更详细地解释一下您的问题是什么?您试图自动化哪种“缓存处理”?这里,反射似乎是唯一合乎逻辑的解决方案。这令人惊讶。我不知道他们有这个。查看代码,它似乎非常适合我想要做的事情。让我给它一个旋转,我会标记为最好的答案,如果它的工作+1我在线查看了文档和一些示例,这正是我所需要的。我将为其他人发布一些代码片段的编辑。这太棒了。我不知道他们有这个。查看代码,它似乎非常适合我想要做的事情。让我给它一个旋转,我会标记为最好的答案,如果它的工作+1我在线查看了文档和一些示例,这正是我所需要的。我将为其他人发布一些代码片段的编辑。