我有一系列元素。我在每个元素名称的基础上制作对象并调用一些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;
更新我不想要的循环内的每个对象。如何为每个对象保持不同?
答案 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引入和接收每个对象的值。