Java: замена подкласса / подтипа параметра при замене метода?

Я задавал этот вопрос раньше, но у меня была ошибка в коде, которую заметило большинство людей, а не сама проблема.

В любом случае, я пытаюсь переопределить метод интерфейса в классе. Однако я хочу, чтобы тип параметра в методе переопределения был подклассом типа параметра, определенного в методе переопределения.

Интерфейс:

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". Есть ли у меня идеи, ребята, я действительно застрял?

14
задан Barakat 11 December 2010 в 17:27
поделиться