diff --git a/src/main/php/lang/GenericTypes.class.php b/src/main/php/lang/GenericTypes.class.php index f102c178b6..d1b8291171 100755 --- a/src/main/php/lang/GenericTypes.class.php +++ b/src/main/php/lang/GenericTypes.class.php @@ -210,7 +210,8 @@ public function newType0($base, $arguments) { array_unshift($state, 4); $src.= '{'; foreach ($placeholders as $placeholder => $type) { - $src.= 'static $'.$placeholder.'= "'.$type.'";'; + $src.= 'static $'.$placeholder.'= null;'; + $src.= 'if (!$'.$placeholder.') $'.$placeholder.'= Type::forName("'.$type.'");'; } if (isset($annotations[0]['generic']['return'])) { $meta[1][$m][DETAIL_RETURNS]= strtr($annotations[0]['generic']['return'], $placeholders); diff --git a/src/test/php/net/xp_framework/unittest/core/generics/Unserializer.class.php b/src/test/php/net/xp_framework/unittest/core/generics/Unserializer.class.php index 36cb2d0035..02729d3390 100755 --- a/src/test/php/net/xp_framework/unittest/core/generics/Unserializer.class.php +++ b/src/test/php/net/xp_framework/unittest/core/generics/Unserializer.class.php @@ -16,7 +16,6 @@ class Unserializer extends \lang\Object { */ #[@generic(return= 'T')] public function newInstance($arg= null) { - $type= Type::forName($T); - return null === $arg ? $type->default : $type->newInstance($arg); + return null === $arg ? $T->default : $T->newInstance($arg); } } \ No newline at end of file