Я думаю, что есть еще одно элегантное решение.
Что вы хотите сделать (безопасно) «передать» тип типичного параметра типа от класса concerete до суперкласса.
Если вы позволяете себе думать о типе класса как «метаданных» в классе, это предполагает метод Java для кодирования метаданных во время выполнения: аннотации.
Сначала определите пользовательскую аннотацию вдоль этих строк :
import java.lang.annotation.*;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface EntityAnnotation {
Class entityClass();
}
Затем вы можете добавить аннотацию к вашему подклассу.
@EntityAnnotation(entityClass = PassedGenericType.class)
public class Subclass<PassedGenericType> {...}
Затем вы можете использовать этот код, чтобы получить тип класса в базовом классе:
import org.springframework.core.annotation.AnnotationUtils;
.
.
.
private Class getGenericParameterType() {
final Class aClass = this.getClass();
EntityAnnotation ne =
AnnotationUtils.findAnnotation(aClass, EntityAnnotation.class);
return ne.entityClass();
}
Некоторые ограничения этого подхода:
PassedGenericType
) в двух местах, а не один, не являющийся сухим. Функция заголовка используется для передачи заголовков ответа HTTP обратно пользователю (т.е. Вы не можете использовать ее для создания заголовков запроса.
май я спрашиваю, почему Вы делаете это? Почему моделируют запрос POST, когда можно просто тут же и тогда действовать на данные некоторым образом? Я принимаю, конечно, script.php, находится на Вашем сервере.
Для создания запроса POST откройтесь соединение TCP к хосту с помощью fsockopen (), затем используйте fwrite () на обработчике, возвращенном из fsockopen () с теми же значениями, которые Вы использовали в функциях заголовка в OP. С другой стороны, можно использовать ЗАВИХРЕНИЕ.
В дополнение к тому, что сказал Служащий, смотрите на классы в ГРУША , существуют классы Запроса HTTP там, что можно использовать, даже если Вам не установили ВИХРЕВОЕ расширение в Вашем распределении PHP.
private function sendHttpRequest($host, $path, $query, $port=80){
header("POST $path HTTP/1.1\r\n" );
header("Host: $host\r\n" );
header("Content-type: application/x-www-form-urlencoded\r\n" );
header("Content-length: " . strlen($query) . "\r\n" );
header("Connection: close\r\n\r\n" );
header($query);
}
Это поможет вам сразу