我有一个带有重载构造函数的类:
MyClass([string] foo) { Write-Host "1" }
MyClass([string[]] bar) { Write-Host "2" }
当我运行以下命令时:
[MyClass]::new(@("my value"))
Id期望输出为“ 2”。相反,我得到“ 1”。我想念什么?
答案 0 :(得分:4)
这是因为您没有传递字符串数组。您正在传递对象数组。由于未明确定义对象数组,因此它将尝试使用第一个构造函数对其进行解释。
使用:
"dynamodb.table.name": "ddb-table",
"dynamodb.column.mapping": "col:col",
"storage_handler": "org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler"
例如:
class MyClass{
MyClass([string] $foo) { Write-Host "1 $foo" }
MyClass([string[]] $bar) { Write-Host "2 $($bar)" }
}
如果您将其明确定义为字符串数组,则它将按预期工作:
PS C:\> $myValue = @("myvalue")
PS C:\> $myValue.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
PS C:\> [MyClass]::new($myValue)
1 myvalue