Я задавал этот вопрос раньше, но у меня была ошибка в коде, которую заметило большинство людей, а не сама проблема.
В любом случае, я пытаюсь переопределить метод интерфейса в классе. Однако я хочу, чтобы тип параметра в методе переопределения был подклассом типа параметра, определенного в методе переопределения.
Интерфейс:
public interface Observer {
public void update(ComponentUpdateEvent updateEvent) throws Exception;
}
В то время как класс, который переопределяет этот метод:
public class ConsoleDrawer extends Drawer {
//...
@Override
public void update(ConsoleUpdateEvent updateEvent) throws Exception {
if (this.componentType != updateEvent.getComponentType()) {
throw new Exception("ComponentType Mismatch.");
}
else {
messages = updateEvent.getComponentState();
}
}
//...
}
ConsoleUpdateEvent является подклассом ComponentUpdateEvent.
Теперь я мог бы просто сделать так, чтобы метод update () в ConsoleDrawer принял ComponentUpdateEvent в качестве параметра, а затем преобразовал его в ConsoleUpdateEvent, но я ищу немного более элегантное решение, если это возможно. Мы будем признательны за Anyhelp. Спасибо. import time process = os.popen ("top"). readlines () time.sleep (1) os.popen ("killall top") процесс печати программа зависает ...
У меня есть программа Python для Linux почти выглядит так:
import os
import time
process = os.popen("top").readlines()
time.sleep(1)
os.popen("killall top")
print process
программа зависает в этой строке:
process = os.popen("top").readlines()
и это происходит в инструментах, которые продолжают выводить обновления как «Top»
мои лучшие испытания:
import os
import time
import subprocess
process = subprocess.Popen('top')
time.sleep(2)
os.popen("killall top")
print process
она работала лучше, чем первая ( это kelled), но он возвращает:
<subprocess.Popen object at 0x97a50cc>
второе испытание:
import os
import time
import subprocess
process = subprocess.Popen('top').readlines()
time.sleep(2)
os.popen("killall top")
print process
то же самое, что и первое. Он завис из-за "readlines ()"
Его возврат должен быть таким:
top - 05:31:15 up 12:12, 5 users, load average: 0.25, 0.14, 0.11
Tasks: 174 total, 2 running, 172 sleeping, 0 stopped, 0 zombie
Cpu(s): 9.3%us, 3.8%sy, 0.1%ni, 85.9%id, 0.9%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1992828k total, 1849456k used, 143372k free, 233048k buffers
Swap: 4602876k total, 0k used, 4602876k free, 1122780k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
31735 Barakat 20 0 246m 52m 20m S 19.4 2.7 13:54.91 totem
1907 root 20 0 91264 45m 15m S 1.9 2.3 38:54.14 Xorg
2138 Barakat 20 0 17356 5368 4284 S 1.9 0.3 3:00.15 at-spi-registry
2164 Barakat 9 -11 164m 7372 6252 S 1.9 0.4 2:54.58 pulseaudio
2394 Barakat 20 0 27212 9792 8256 S 1.9 0.5 6:01.48 multiload-apple
6498 Barakat 20 0 56364 30m 18m S 1.9 1.6 0:03.38 pyshell
1 root 20 0 2880 1416 1208 S 0.0 0.1 0:02.02 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.12 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:02.07 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
9 root 20 0 0 0 0 S 0.0 0.0 0:01.43 events/0
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuset
12 root 20 0 0 0 0 S 0.0 0.0 0:00.02 khelper
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 netns
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 async/mgr
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pm
и сохранение в переменной "process". Есть ли у меня идеи, ребята, я действительно застрял?