2014-01-19 3 views
0

Есть ли возможность экземпляра класса с переменной и без явного вызова классового объекта?Консоль конструктора с varibales без цитирования явного classtype в Java?

Например, у нас есть класс cat и строка, которая представляет String cat. Можно ли вызвать класс кота, как показано ниже или аналогично в коде?

public class MyMainClass { 

public static void main(String[] args) { 

    String name="cat"; 

    //normal methode of instancing the class Cat: 
    Cat cat=new Cat(); 

    //my method 
    name cat=new name(); // because name="cat" this should be Cat cat=new Cat(); 

    } 
} 


class Cat{ 
// whatsoever 
} 
+0

Каков ваш прецедент? – Jeffrey

+0

'String name = new String (" cat ");' is was waste. Просто выполните 'String name =" cat "' –

+0

Есть несколько вещей, которые можно сделать в этих строках с использованием отражений или дженериков, мне нужно будет более подробно узнать, что и почему вы пытаетесь сделать, прежде чем я смогу сделать какие-либо рекомендации. –

ответ

1

Использование отражения:

String nameString = "com.example.Test"; 
Class name = Class.forName(nameString); 
Object instance = name.newInstance(); 
Test test; // Defined if is instanceof Test 

if(instance instanceof Test) { 
    // Yeah! now you can do this: test = (Test)instance; and something else... 
} 

Примечание: Вы должны ввести полное имя пакета в строке.

1

Вы можете использовать отражение:

String name = "com.foo.Cat"; // Note fully qualified name 
Object object = Class.forName(name).newInstance(); 

, но вы не будете знать, какой тип у вас есть, если вы не используете instanceof.

И значение name не может быть построено для создания этой переменной.

Смежные вопросы