Термин сверх-типовая структура = структура данных, которая принимает различные типы, может быть примитивной или определяемой пользователем.
Я думаю, что ruby поддерживает много типов в структурах, таких как таблицы. Я пробовал таблицу с типами «String», «char» и «File» в Java, но ошибался.
- Как я могу иметь сверхтипированную структуру в Java?
Как показать типы в объявлении? Как насчет инициализации? Предположим, структура:
INDEX VAR FILETYPE
//0 -> file FILE
//1 -> lineMap SizeSequence
//2 -> type char
//3 -> binary boolean
//4 -> name String
//5 -> path String
Код
import java.io.*;
import java.util.*;
public class Object
{
public static void print(char a)
{
System.out.println(a);
}
public static void print(String s)
{
System.out.println(s);
}
public static void main(String[] args)
{
Object[] d = new Object[6];
d[0] = new File(".");
d[2] = 'T';
d[4] = ".";
print(d[2]);
print(d[4]);
}
}
Ошибка
Object.java:18: incompatible types
found : java.io.File
required: Object
d[0] = new File(".");
^
Object.java:19: incompatible types
found : char
required: Object
d[2] = 'T';
^
После неприятностей с реальной проблемой:
d [2] хранит тип char, но методы видят его как Object. Многие из моих методов не имеют Object, поэтому менять их из-за этого слишком много.
- Как я могу изменить типы, прежде чем указывать их как парс?
- Должен ли я сделать это в отдельном классе обработки или есть готовый метод?
Код
package file;
import java.io.*;
import java.util.*;
public class ObjectTest
{
//I have this kind of methods
//I want them to work with Object
// without changing the par type,
// possible?
public static void print(char a)
{
System.out.println(a);
}
public static void print(String s)
{
System.out.println(s);
}
public static void main(String[] args)
{
java.lang.Object[] d = new java.lang.Object[6];
d[0] = (Object) new File(".");
d[2] = (Object) new Character('T');
d[4] = (Object) new String(".");
print(d[2]);
print(d[4]);
}
//I can get it this way working
// but some of my methods are not Objects
// and they need to be types like String
private static void print(Object object) {
System.out.println(object);
}
}