Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [JAVA 6] problema di overload/override

    Salve a tutti. Ho una classe NewTable che estende JTable.

    JTable ha un metodo setModel(TableModel)

    mentre

    NewTable ha un metodo setModel(DefaultTableModel) che, in java 6, non può avere l'annotation @override perchè la firma è diversa (o almeno io non ci sono riuscito)


    DefaultTableModel implementa TableModel


    Nel main dichiaro una variabile "NewTable table1"

    e chiamo il metodo table1.setModel passandogli un TableModel

    ma il setModel che viene chiamato non è quello di NewTable, bensì di JTable


    Come posso far capire al compilatore che voglio invocare il metodo setModel di NewTable passandogli però un TableModel?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA 6] problema di overload/override

    Originariamente inviato da redcloud
    NewTable ha un metodo setModel(DefaultTableModel) che, in java 6, non può avere l'annotation @override perchè la firma è diversa (o almeno io non ci sono riuscito)
    Hai fatto un overload, non un override, dal momento che la signature non è "override equivalent" con quella di setModel in JTable.

    Originariamente inviato da redcloud
    Nel main dichiaro una variabile "NewTable table1"

    e chiamo il metodo table1.setModel passandogli un TableModel

    ma il setModel che viene chiamato non è quello di NewTable, bensì di JTable
    Quindi hai una variabile di tipo TableModel mentre l'oggetto istanziato è ad esempio un DefaultTableModel o una tua classe che lo estende??

    Cioè per esempio hai una cosa del genere:

    TableModel unModel;
    unModel = new TuaClasseCheEstendeDefaultTableModel ();
    ...
    table1.setModel (unModel);

    È chiaro che la scelta della versione del metodo setModel da invocare è fatta a tempo di compilazione, quindi se la variabile è di tipo TableModel, allora il metodo scelto può essere solo il setModel di JTable.

    Originariamente inviato da redcloud
    Come posso far capire al compilatore che voglio invocare il metodo setModel di NewTable passandogli però un TableModel?
    Dichiara la variabile (che passerai a setModel) di tipo DefaultTableModel e il compilatore sceglierà il "tuo" metodo setModel in NewTable.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ok, grazie. Non aveva senso quello che volevo fare.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.