2015-09-29 2 views
-2

Я хочу создать класс, который может принимать два разных типа данных для каждого параметра. Как это можно сделать?Класс, который принимает два разных типа данных в Java?

Я понимаю, что приведенный ниже код не работает, но как я могу сделать что-то подобное? В принципе, так что параметр может быть int или String или что-то подобное?

Пример:

public Combat(int attack || String attack, int defence || String defence) { 
     //code to parse strings into ints 

    } 
+0

Напишите способ для каждого случая использования, который вам нужен? – MadProgrammer

ответ

3

Похоже, вы хотите, чтобы обеспечить overloaded constructor. Вы можете делегировать версии int с чем-то вроде,

private int attack; 
private int defence; 
public Combat(int attack, int defence) { 
    this.attack = attack; 
    this.defence = defence; 
} 
public Combat(String attack, String defence) { 
    this(Integer.parseInt(attack), Integer.parseInt(defence)); 
} 

если вы хотите пройти String, int или int, String, а

public Combat(int attack, String defence) { 
    this(attack, Integer.parseInt(defence)); 
} 
public Combat(String attack, int defence) { 
    this(Integer.parseInt(attack), defence); 
} 
+0

Спасибо, сэр, это было намного проще, чем я мог себе представить! – Justin

1

Вы должны создать 2 конструкторами. Я приведу пример ниже:

public Test(String test){ 
    // blah blah blah 
} 
public Test(int test){ 
    // blah blah blah 
} 

Поэтому, когда экземпляр создан, он может принимать любой параметр.

Кроме того, не путайте с заявлениями об уловах. Уловы могут занять несколько исключений с одной |, например:

try{ 
    // blah blah blah 
} 
catch(TestException | TestExceptionTwo e){ 
    // blah blah blah 
} 

Использование одного | не работает с конструкторами или методами.