如何为每个对象使用变量

时间:2015-09-30 11:26:22

标签: java class oop object

我有一系列元素。我在每个元素名称的基础上制作对象并调用一些getter函数。我正在制作的课程的对象实际上是第三方图书馆," Sigar"。

问题是我不想修改这个第三方库,因为我无法为每个对象保留变量值。我需要想出一些方法来为每个对象分别保持单独的变量。

我希望我的描述解释我想要的东西。以下是我的代码

private long lastDiskCheck = 0;
private long lastDiskRead = 0;
private long lastDiskWrite = 0;
private String getDiskUsage() {
    try {
        List<FileSystem> result = new ArrayList<FileSystem>();
        org.hyperic.sigar.FileSystem[] fss = null;
        fss = sig.getFileSystemList();
        List<Integer> diskUsage = new ArrayList<Integer>();
        String ioStat = "";
        for (int i = 0; i<fss.length; i++) {
            FileSystem fs = fss[i];
            FileSystemUsage usage = sig.getFileSystemUsage(fs.getDirName());
            if (lastDiskCheck!=0) {
                long diff = (nanoTime() - lastDiskCheck)/1000000;
                long diffRead = usage.getDiskReadBytes() - lastDiskRead;
                long diffWrite = usage.getDiskWriteBytes() - lastDiskWrite;
                ioStat = String.format("(%d/%d kB/s)", diffRead/diff, diffWrite / diff);
            }
            lastDiskRead = usage.getDiskReadBytes();
            lastDiskWrite = usage.getDiskWriteBytes();
            lastDiskCheck = nanoTime();
            diskUsage.add((int)(usage.getUsePercent()*100));
        }
        return String.format("%d%% %s", (Collections.max(diskUsage)), ioStat);
    } catch (SigarException e) {
        e.printStackTrace();
    }
    return "n/a";
}

三个变量

private long lastDiskCheck = 0;
private long lastDiskRead = 0;
private long lastDiskWrite = 0;

更新我不想要的循环内的每个对象。如何为每个对象保持不同?

2 个答案:

答案 0 :(得分:1)

public class MyClass {
    private long lastDiskCheck;
    private long lastDiskRead;
    private long lastDiskWrite;

    private YourObject object;

    public void setLastDiskCheck(lastDiskCheck){ // setter of lastDiskCheck
        this.lastDiskCheck = lastDiskCheck;
    }

    public long getLastDiskCheck(){ //getter of lastDiskCheck
        return lastDiskCheck;
    }
}

使用这种方法,您可以将每个对象保留在MyClass中,并为每个对象保留不同的值。

答案 1 :(得分:1)

嗯,在你的情况下。您应该学习Java中面向对象编程的四大支柱:http://learn2geek.com/4-pillars-oop-java/

之后,您了解如何创建不同的实例,如果您具备编程知识,则不会有任何问题。

更多,澄清并回答你的问题。最好的解决方案是创建一个具有私有属性的类。您将使用getter / setters方法(公共修饰符)访问这些属性。实际上,您可以创建一些对象,并且可以使用getter和setter引入和接收每个对象的值。

简要说明:How do getters and setters work?